d3dcompiler: Store location information in constants, variable dereferences and constructors.
diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y
index cf0c7b5..f7f62fe 100644
--- a/dlls/d3dcompiler_43/hlsl.y
+++ b/dlls/d3dcompiler_43/hlsl.y
@@ -799,6 +799,7 @@
return -1;
}
c->node.type = HLSL_IR_CONSTANT;
+ set_location(&c->node.loc, &yylloc);
c->node.data_type = new_hlsl_type("float", HLSL_CLASS_SCALAR, HLSL_TYPE_FLOAT, 1, 1);
c->v.value.f[0] = $1;
$$ = &c->node;
@@ -812,6 +813,7 @@
return -1;
}
c->node.type = HLSL_IR_CONSTANT;
+ set_location(&c->node.loc, &yylloc);
c->node.data_type = new_hlsl_type("int", HLSL_CLASS_SCALAR, HLSL_TYPE_INT, 1, 1);
c->v.value.i[0] = $1;
$$ = &c->node;
@@ -825,6 +827,7 @@
return -1;
}
c->node.type = HLSL_IR_CONSTANT;
+ set_location(&c->node.loc, &yylloc);
c->node.data_type = new_hlsl_type("bool", HLSL_CLASS_SCALAR, HLSL_TYPE_BOOL, 1, 1);
c->v.value.b[0] = $1;
$$ = &c->node;
@@ -832,7 +835,13 @@
| variable
{
struct hlsl_ir_deref *deref = new_var_deref($1);
- $$ = deref ? &deref->node : NULL;
+ if (deref)
+ {
+ $$ = &deref->node;
+ set_location(&$$->loc, &@1);
+ }
+ else
+ $$ = NULL;
}
| '(' expr ')'
{
@@ -888,6 +897,7 @@
constructor = d3dcompiler_alloc(sizeof(*constructor));
constructor->node.type = HLSL_IR_CONSTRUCTOR;
+ set_location(&constructor->node.loc, &@3);
constructor->node.data_type = $2;
constructor->arguments = $4;