TIntermediate::promoteConstantUnion(): fix conversion to int8
The signedness of type char is implementation-defined in C++. The conversion to (signed) int8 currently uses a cast to char, which is undefined for negative values when the type char is implemented as unsigned. Thus, fix to cast to "signed char", which has the intended semantic on all implementations. Fixes #2807
This commit is contained in:
parent
925503088e
commit
f1fa8afa25
@ -3902,7 +3902,7 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
|
|||||||
case EbtFloat16: PROMOTE(setDConst, double, Get); break; \
|
case EbtFloat16: PROMOTE(setDConst, double, Get); break; \
|
||||||
case EbtFloat: PROMOTE(setDConst, double, Get); break; \
|
case EbtFloat: PROMOTE(setDConst, double, Get); break; \
|
||||||
case EbtDouble: PROMOTE(setDConst, double, Get); break; \
|
case EbtDouble: PROMOTE(setDConst, double, Get); break; \
|
||||||
case EbtInt8: PROMOTE(setI8Const, char, Get); break; \
|
case EbtInt8: PROMOTE(setI8Const, signed char, Get); break; \
|
||||||
case EbtInt16: PROMOTE(setI16Const, short, Get); break; \
|
case EbtInt16: PROMOTE(setI16Const, short, Get); break; \
|
||||||
case EbtInt: PROMOTE(setIConst, int, Get); break; \
|
case EbtInt: PROMOTE(setIConst, int, Get); break; \
|
||||||
case EbtInt64: PROMOTE(setI64Const, long long, Get); break; \
|
case EbtInt64: PROMOTE(setI64Const, long long, Get); break; \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user