r300/compiler: Fix dataflow analysis bug with ELSE blocks

Writes within ELSE blocks were being ignored which prevented us from
discovering all possible writers for some register values.

Fixes piglit glsl-fs-raytrace-bug27060
This commit is contained in:
Tom Stellard
2011-04-18 21:16:14 -07:00
parent f41e1db327
commit ffc1d166d2
@@ -704,9 +704,16 @@ static void get_readers_for_single_write(
&d->BranchMasks[branch_depth];
if (masks->HasElse) {
/* Abort on read for components that
* were written in the IF block. */
d->ReaderData->AbortOnRead |=
masks->IfWriteMask
& ~masks->ElseWriteMask;
/* Abort on read for components that
* were written in the ELSE block. */
d->ReaderData->AbortOnRead |=
masks->ElseWriteMask
& ~d->AliveWriteMask;
d->AliveWriteMask = masks->IfWriteMask
^ ((masks->IfWriteMask ^
masks->ElseWriteMask)