92d83b7b9d
GLSL ES2 documentation on out parameters: "Evaluation of an out parameter results in an l-value that is used to copy out a value when the function returns." The inliner does not do any alias checking when inlining an `out` param. That is, passing the same variable to two separate `out` parameters would not generate two distinct lvalues in the inlined code; it reuses the same variable for each out-params in the inlined code. (Amusingly, our CFG can fully optimize away this test code so it just returns "red".) Change-Id: Ib781d2cfdac54f01b6abe159af0c84ff24ff6976 Bug: skia:11326 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/370256 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: John Stiles <johnstiles@google.com> Auto-Submit: John Stiles <johnstiles@google.com>
13 lines
245 B
Plaintext
13 lines
245 B
Plaintext
uniform half4 colorGreen, colorRed;
|
|
|
|
bool out_params_are_distinct(out half x, out half y) {
|
|
x = 1;
|
|
y = 2;
|
|
return x == 1 && y == 2;
|
|
}
|
|
|
|
half4 main() {
|
|
half x = 0;
|
|
return out_params_are_distinct(x, x) ? colorGreen : colorRed;
|
|
}
|