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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user