Matteo Bruni : d3dcompiler: Use location information in add_modifier().
Alexandre Julliard
julliard at winehq.org
Thu Jul 12 18:00:33 CDT 2012
Module: wine
Branch: master
Commit: 2b2b8501060e6594424700bf543a99aea50a3704
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2b2b8501060e6594424700bf543a99aea50a3704
Author: Matteo Bruni <mbruni at codeweavers.com>
Date: Thu Jul 12 16:01:36 2012 +0200
d3dcompiler: Use location information in add_modifier().
---
dlls/d3dcompiler_43/hlsl.y | 60 ++++++++++++++++++++++----------------------
1 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y
index cadcfc9..cf0c7b5 100644
--- a/dlls/d3dcompiler_43/hlsl.y
+++ b/dlls/d3dcompiler_43/hlsl.y
@@ -146,25 +146,7 @@ static BOOL declare_variable(struct hlsl_ir_var *decl, BOOL local)
return TRUE;
}
-static DWORD add_modifier(DWORD modifiers, DWORD mod)
-{
- if (modifiers & mod)
- {
- hlsl_message("Line %u: modifier '%s' already specified.\n",
- hlsl_ctx.line_no, debug_modifiers(mod));
- set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return modifiers;
- }
- if (mod & (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR)
- && modifiers & (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR))
- {
- hlsl_message("Line %u: more than one matrix majority keyword.\n",
- hlsl_ctx.line_no);
- set_parse_status(&hlsl_ctx.status, PARSE_ERR);
- return modifiers;
- }
- return modifiers | mod;
-}
+static DWORD add_modifier(DWORD modifiers, DWORD mod, const struct YYLTYPE *loc);
static unsigned int components_count_expr_list(struct list *list)
{
@@ -691,47 +673,47 @@ var_modifiers: /* Empty */
}
| KW_EXTERN var_modifiers
{
- $$ = add_modifier($2, HLSL_STORAGE_EXTERN);
+ $$ = add_modifier($2, HLSL_STORAGE_EXTERN, &@1);
}
| KW_NOINTERPOLATION var_modifiers
{
- $$ = add_modifier($2, HLSL_STORAGE_NOINTERPOLATION);
+ $$ = add_modifier($2, HLSL_STORAGE_NOINTERPOLATION, &@1);
}
| KW_PRECISE var_modifiers
{
- $$ = add_modifier($2, HLSL_MODIFIER_PRECISE);
+ $$ = add_modifier($2, HLSL_MODIFIER_PRECISE, &@1);
}
| KW_SHARED var_modifiers
{
- $$ = add_modifier($2, HLSL_STORAGE_SHARED);
+ $$ = add_modifier($2, HLSL_STORAGE_SHARED, &@1);
}
| KW_GROUPSHARED var_modifiers
{
- $$ = add_modifier($2, HLSL_STORAGE_GROUPSHARED);
+ $$ = add_modifier($2, HLSL_STORAGE_GROUPSHARED, &@1);
}
| KW_STATIC var_modifiers
{
- $$ = add_modifier($2, HLSL_STORAGE_STATIC);
+ $$ = add_modifier($2, HLSL_STORAGE_STATIC, &@1);
}
| KW_UNIFORM var_modifiers
{
- $$ = add_modifier($2, HLSL_STORAGE_UNIFORM);
+ $$ = add_modifier($2, HLSL_STORAGE_UNIFORM, &@1);
}
| KW_VOLATILE var_modifiers
{
- $$ = add_modifier($2, HLSL_STORAGE_VOLATILE);
+ $$ = add_modifier($2, HLSL_STORAGE_VOLATILE, &@1);
}
| KW_CONST var_modifiers
{
- $$ = add_modifier($2, HLSL_MODIFIER_CONST);
+ $$ = add_modifier($2, HLSL_MODIFIER_CONST, &@1);
}
| KW_ROW_MAJOR var_modifiers
{
- $$ = add_modifier($2, HLSL_MODIFIER_ROW_MAJOR);
+ $$ = add_modifier($2, HLSL_MODIFIER_ROW_MAJOR, &@1);
}
| KW_COLUMN_MAJOR var_modifiers
{
- $$ = add_modifier($2, HLSL_MODIFIER_COLUMN_MAJOR);
+ $$ = add_modifier($2, HLSL_MODIFIER_COLUMN_MAJOR, &@1);
}
complex_initializer: initializer_expr
@@ -995,6 +977,24 @@ static void set_location(struct source_location *loc, const struct YYLTYPE *l)
loc->col = l->first_column;
}
+static DWORD add_modifier(DWORD modifiers, DWORD mod, const struct YYLTYPE *loc)
+{
+ if (modifiers & mod)
+ {
+ hlsl_report_message(hlsl_ctx.source_file, loc->first_line, loc->first_column, HLSL_LEVEL_ERROR,
+ "modifier '%s' already specified", debug_modifiers(mod));
+ return modifiers;
+ }
+ if (mod & (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR)
+ && modifiers & (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR))
+ {
+ hlsl_report_message(hlsl_ctx.source_file, loc->first_line, loc->first_column, HLSL_LEVEL_ERROR,
+ "more than one matrix majority keyword");
+ return modifiers;
+ }
+ return modifiers | mod;
+}
+
struct bwriter_shader *parse_hlsl(enum shader_type type, DWORD major, DWORD minor,
const char *entrypoint, char **messages)
{
More information about the wine-cvs
mailing list