mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 12:00:05 +00:00
Preprocessor: UINT_MAX is translated to constant incorrectly.
This commit is contained in:
parent
cfd7ce87cd
commit
99c4dd16db
File diff suppressed because it is too large
Load Diff
@ -7,12 +7,12 @@ Linked fragment stage:
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 207
|
||||
// Id's are bound by 213
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 15 68 77 200 202 204
|
||||
EntryPoint Fragment 4 "main" 15 68 77 206 208 210
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source ESSL 310
|
||||
Name 4 "main"
|
||||
@ -33,10 +33,10 @@ Linked fragment stage:
|
||||
Name 154 "mask2"
|
||||
Name 156 "mask3"
|
||||
Name 160 "mask4"
|
||||
Name 200 "f"
|
||||
Name 202 "v"
|
||||
Name 204 "i"
|
||||
Name 206 "b"
|
||||
Name 206 "f"
|
||||
Name 208 "v"
|
||||
Name 210 "i"
|
||||
Name 212 "b"
|
||||
Decorate 8(count) RelaxedPrecision
|
||||
Decorate 12(u) RelaxedPrecision
|
||||
Decorate 15(t) RelaxedPrecision
|
||||
@ -138,11 +138,13 @@ Linked fragment stage:
|
||||
Decorate 196 RelaxedPrecision
|
||||
Decorate 197 RelaxedPrecision
|
||||
Decorate 198 RelaxedPrecision
|
||||
Decorate 200(f) RelaxedPrecision
|
||||
Decorate 202(v) RelaxedPrecision
|
||||
Decorate 202(v) Flat
|
||||
Decorate 204(i) RelaxedPrecision
|
||||
Decorate 204(i) Flat
|
||||
Decorate 202 RelaxedPrecision
|
||||
Decorate 203 RelaxedPrecision
|
||||
Decorate 206(f) RelaxedPrecision
|
||||
Decorate 208(v) RelaxedPrecision
|
||||
Decorate 208(v) Flat
|
||||
Decorate 210(i) RelaxedPrecision
|
||||
Decorate 210(i) Flat
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
@ -193,14 +195,16 @@ Linked fragment stage:
|
||||
155: 10(int) Constant 2576
|
||||
158: 6(int) Constant 4
|
||||
161: 10(int) Constant 2737
|
||||
199: TypePointer Input 74(float)
|
||||
200(f): 199(ptr) Variable Input
|
||||
201: TypePointer Input 66(ivec4)
|
||||
202(v): 201(ptr) Variable Input
|
||||
203: TypePointer Input 6(int)
|
||||
204(i): 203(ptr) Variable Input
|
||||
205: TypePointer Private 22(bool)
|
||||
206(b): 205(ptr) Variable Private
|
||||
199: 10(int) Constant 4294967295
|
||||
200: TypePointer Output 10(int)
|
||||
205: TypePointer Input 74(float)
|
||||
206(f): 205(ptr) Variable Input
|
||||
207: TypePointer Input 66(ivec4)
|
||||
208(v): 207(ptr) Variable Input
|
||||
209: TypePointer Input 6(int)
|
||||
210(i): 209(ptr) Variable Input
|
||||
211: TypePointer Private 22(bool)
|
||||
212(b): 211(ptr) Variable Private
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
8(count): 7(ptr) Variable Function
|
||||
@ -434,5 +438,10 @@ Linked fragment stage:
|
||||
197: 66(ivec4) Load 68(c)
|
||||
198: 66(ivec4) IAdd 197 196
|
||||
Store 68(c) 198
|
||||
201: 200(ptr) AccessChain 68(c) 103
|
||||
202: 10(int) Load 201
|
||||
203: 10(int) IAdd 202 199
|
||||
204: 200(ptr) AccessChain 68(c) 103
|
||||
Store 204 203
|
||||
Return
|
||||
FunctionEnd
|
||||
|
@ -259,3 +259,6 @@ const uint64_t i_to_u64 = uint64_t(si);
|
||||
// uint <-> int64
|
||||
const uint i64_to_u = uint(si64);
|
||||
const int64_t u_to_i64 = int64_t(su);
|
||||
|
||||
#define UINT64_MAX 18446744073709551615ul
|
||||
uint64_t u64Max = UINT64_MAX;
|
||||
|
@ -96,4 +96,7 @@ void main()
|
||||
count *= 7; // 341413380
|
||||
|
||||
c += uvec4(count);
|
||||
|
||||
#define UINT_MAX 4294967295u
|
||||
c.x += UINT_MAX;
|
||||
}
|
||||
|
@ -224,7 +224,6 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken)
|
||||
ppToken->dval = atof(ppToken->name);
|
||||
break;
|
||||
case PpAtomConstInt:
|
||||
case PpAtomConstUint:
|
||||
if (len > 0 && tokenText[0] == '0') {
|
||||
if (len > 1 && (tokenText[1] == 'x' || tokenText[1] == 'X'))
|
||||
ppToken->ival = strtol(ppToken->name, 0, 16);
|
||||
@ -233,8 +232,16 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken)
|
||||
} else
|
||||
ppToken->ival = atoi(ppToken->name);
|
||||
break;
|
||||
case PpAtomConstUint:
|
||||
if (len > 0 && tokenText[0] == '0') {
|
||||
if (len > 1 && (tokenText[1] == 'x' || tokenText[1] == 'X'))
|
||||
ppToken->ival = (int)strtoul(ppToken->name, 0, 16);
|
||||
else
|
||||
ppToken->ival = (int)strtoul(ppToken->name, 0, 8);
|
||||
} else
|
||||
ppToken->ival = (int)strtoul(ppToken->name, 0, 10);
|
||||
break;
|
||||
case PpAtomConstInt64:
|
||||
case PpAtomConstUint64:
|
||||
if (len > 0 && tokenText[0] == '0') {
|
||||
if (len > 1 && (tokenText[1] == 'x' || tokenText[1] == 'X'))
|
||||
ppToken->i64val = strtoll(ppToken->name, nullptr, 16);
|
||||
@ -243,6 +250,15 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken)
|
||||
} else
|
||||
ppToken->i64val = atoll(ppToken->name);
|
||||
break;
|
||||
case PpAtomConstUint64:
|
||||
if (len > 0 && tokenText[0] == '0') {
|
||||
if (len > 1 && (tokenText[1] == 'x' || tokenText[1] == 'X'))
|
||||
ppToken->i64val = (long long)strtoull(ppToken->name, nullptr, 16);
|
||||
else
|
||||
ppToken->i64val = (long long)strtoull(ppToken->name, nullptr, 8);
|
||||
} else
|
||||
ppToken->i64val = (long long)strtoull(ppToken->name, 0, 10);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user