Short-circuit evaluation of ? : operator for varying tests.

? : now short-circuits evaluation of the expressions following
the boolean test for varying test types.  (It already did this
for uniform tests).

Issue #169.
This commit is contained in:
Matt Pharr
2012-02-01 11:03:58 -08:00
parent fdb4eaf437
commit 89cb809922
6 changed files with 175 additions and 13 deletions

View File

@@ -0,0 +1,21 @@
export uniform int width() { return programCount; }
uniform int * uniform ptr;
bool crashEven() {
return (programIndex & 1) ? true : (*ptr > 0);
}
export void f_fu(uniform float RET[], uniform float aFOO[], uniform float b) {
float a = aFOO[programIndex];
float a0 = aFOO[0], a1 = aFOO[1];
if (((programIndex & 1) == 1) && crashEven())
RET[programIndex] = 1;
else
RET[programIndex] = 2;
}
export void result(uniform float RET[]) {
RET[programIndex] = (programIndex & 1) ? 1 : 2;
}