Track things like "(3)" and "+3" as expressions, not literals.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@25511 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
35f04bde8a
commit
b35e9bfa21
@ -44,6 +44,8 @@ const int start = 6;
|
||||
layout(location = -2) in vec4 v1; // ERROR
|
||||
layout(location = start + 2) in vec4 v2; // ERROR
|
||||
layout(location = 4.7e10) in vec4 v20; // ERROR
|
||||
layout(location = +60) in float v21; // ERROR
|
||||
layout(location = (2)) in float v22; // ERROR
|
||||
|
||||
struct S {
|
||||
float f1;
|
||||
@ -66,6 +68,8 @@ layout(location = start) in vec4 v3;
|
||||
layout(location = -2) in vec4 v4; // ERROR
|
||||
layout(location = -start) in vec4 v5; // ERROR
|
||||
layout(location = start*start - 2 - 4) in vec4 v6;
|
||||
layout(location = +61) in float v23;
|
||||
layout(location = (62)) in float v24;
|
||||
|
||||
struct S2 {
|
||||
float f1;
|
||||
|
||||
@ -10,22 +10,24 @@ ERROR: 0:44: 'layout-id value' : cannot be negative
|
||||
ERROR: 0:45: 'non-literal layout-id value' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:46: 'layout-id value' : scalar integer expression required
|
||||
ERROR: 0:46: 'location' : location is too large
|
||||
ERROR: 0:50: 'f2' : cannot use layout qualifiers on structure members
|
||||
ERROR: 0:55: 'location on block member' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:60: 'location on block member' : can only use in an in/out block
|
||||
ERROR: 0:47: 'non-literal layout-id value' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:48: 'non-literal layout-id value' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:52: 'f2' : cannot use layout qualifiers on structure members
|
||||
ERROR: 0:57: 'location on block member' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:62: 'location on block member' : can only use in an in/out block
|
||||
ERROR: 0:62: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:60: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:58: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:66: 'layout-id value' : cannot be negative
|
||||
ERROR: 0:67: 'layout-id value' : cannot be negative
|
||||
ERROR: 0:72: 'f2' : cannot use layout qualifiers on structure members
|
||||
ERROR: 0:87: 'location on block member' : can only use in an in/out block
|
||||
ERROR: 0:87: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:87: 'location' : overlapping use of location 3
|
||||
ERROR: 0:85: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:90: 'location' : either the block needs a location, or all members need a location, or no members have a location
|
||||
ERROR: 0:104: 'A' : cannot use layout qualifiers on structure members
|
||||
ERROR: 0:115: 'location' : overlapping use of location 44
|
||||
ERROR: 25 compilation errors. No code generated.
|
||||
ERROR: 0:68: 'layout-id value' : cannot be negative
|
||||
ERROR: 0:69: 'layout-id value' : cannot be negative
|
||||
ERROR: 0:76: 'f2' : cannot use layout qualifiers on structure members
|
||||
ERROR: 0:91: 'location on block member' : can only use in an in/out block
|
||||
ERROR: 0:91: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:91: 'location' : overlapping use of location 3
|
||||
ERROR: 0:89: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:94: 'location' : either the block needs a location, or all members need a location, or no members have a location
|
||||
ERROR: 0:108: 'A' : cannot use layout qualifiers on structure members
|
||||
ERROR: 0:119: 'location' : overlapping use of location 44
|
||||
ERROR: 27 compilation errors. No code generated.
|
||||
|
||||
|
||||
ERROR: node is still EOpNull!
|
||||
@ -70,12 +72,16 @@ ERROR: node is still EOpNull!
|
||||
0:? 'v1' (smooth in 4-component vector of float)
|
||||
0:? 'v2' (layout(location=8 ) smooth in 4-component vector of float)
|
||||
0:? 'v20' (smooth in 4-component vector of float)
|
||||
0:? 'v21' (layout(location=60 ) smooth in float)
|
||||
0:? 'v22' (layout(location=2 ) smooth in float)
|
||||
0:? '__anon__1' (in block{layout(location=1 component=0 ) in float f1, layout(location=3 ) in float f2})
|
||||
0:? 'uinst' (layout(location=1 column_major shared ) uniform block{layout(column_major shared ) uniform float f1, layout(location=3 column_major shared ) uniform float f2})
|
||||
0:? 'v3' (layout(location=6 ) smooth in 4-component vector of float)
|
||||
0:? 'v4' (smooth in 4-component vector of float)
|
||||
0:? 'v5' (smooth in 4-component vector of float)
|
||||
0:? 'v6' (layout(location=30 ) smooth in 4-component vector of float)
|
||||
0:? 'v23' (layout(location=61 ) smooth in float)
|
||||
0:? 'v24' (layout(location=62 ) smooth in float)
|
||||
0:? 'ininst2' (in block{layout(location=28 component=0 ) in bool b1, layout(location=29 component=0 ) in float f1, layout(location=25 ) in float f2, layout(location=26 component=0 ) in 4-component vector of float f3, layout(location=21 ) in structure{float f1, float f2} s2, layout(location=23 component=0 ) in 4-component vector of float f4, layout(location=24 component=0 ) in 4-component vector of float f5})
|
||||
0:? 'uinst2' (layout(location=13 column_major shared ) uniform block{layout(column_major shared ) uniform float f1, layout(location=3 column_major shared ) uniform float f2})
|
||||
0:? 'in3' (in block{in float f1, layout(location=40 ) in float f2})
|
||||
|
||||
@ -502,6 +502,7 @@ public:
|
||||
virtual TIntermTyped* fold(TOperator, const TIntermTyped*) const;
|
||||
virtual TIntermTyped* fold(TOperator, const TType&) const;
|
||||
void setLiteral() { literal = true; }
|
||||
void setExpression() { literal = false; }
|
||||
bool isLiteral() const { return literal; }
|
||||
protected:
|
||||
const TConstUnionArray unionArray;
|
||||
|
||||
@ -9,5 +9,5 @@
|
||||
// source have to figure out how to create revision.h just to get a build
|
||||
// going. However, if it is not updated, it can be a version behind.
|
||||
|
||||
#define GLSLANG_REVISION "25408"
|
||||
#define GLSLANG_DATE "2014/02/18 18:00:58"
|
||||
#define GLSLANG_REVISION "25411"
|
||||
#define GLSLANG_DATE "2014/02/18 19:47:20"
|
||||
|
||||
@ -4096,7 +4096,7 @@ void TParseContext::fixBlockXfbOffsets(TSourceLoc loc, TQualifier& qualifier, TT
|
||||
{
|
||||
// "If a block is qualified with xfb_offset, all its
|
||||
// members are assigned transform feedback buffer offsets. If a block is not qualified with xfb_offset, any
|
||||
// members of that block not qualified with an xfb_offsetwill not be assigned transform feedback buffer
|
||||
// members of that block not qualified with an xfb_offset will not be assigned transform feedback buffer
|
||||
// offsets."
|
||||
|
||||
if (! qualifier.hasXfbBuffer() || ! qualifier.hasXfbOffset())
|
||||
|
||||
@ -253,7 +253,9 @@ primary_expression
|
||||
$$ = parseContext.intermediate.addConstantUnion(unionArray, TType(EbtBool, EvqConst), $1.loc, true);
|
||||
}
|
||||
| LEFT_PAREN expression RIGHT_PAREN {
|
||||
$$ = $2;
|
||||
$$ = $2;
|
||||
if ($$->getAsConstantUnion())
|
||||
$$->getAsConstantUnion()->setExpression();
|
||||
}
|
||||
;
|
||||
|
||||
@ -430,8 +432,11 @@ unary_expression
|
||||
parseContext.unaryOpError($1.loc, errorOp, $2->getCompleteString());
|
||||
$$ = $2;
|
||||
}
|
||||
} else
|
||||
} else {
|
||||
$$ = $2;
|
||||
if ($$->getAsConstantUnion())
|
||||
$$->getAsConstantUnion()->setExpression();
|
||||
}
|
||||
}
|
||||
;
|
||||
// Grammar Note: No traditional style type casts.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user