mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-23 19:10:21 +01:00
Revert "slang: if we detect an if/break or if/continue within a loop and we're"
This reverts commit 752296b8f3.
This commit is contained in:
parent
752296b8f3
commit
192b7bc706
1 changed files with 17 additions and 28 deletions
|
|
@ -718,23 +718,6 @@ new_var(slang_assemble_ctx *A, slang_variable *var)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine if the given operation is of a specific type.
|
||||
*/
|
||||
static GLboolean
|
||||
is_operation_type(const slang_operation *oper, slang_operation_type type)
|
||||
{
|
||||
if (oper->type == type)
|
||||
return GL_TRUE;
|
||||
else if ((oper->type == SLANG_OPER_BLOCK_NEW_SCOPE ||
|
||||
oper->type == SLANG_OPER_BLOCK_NO_NEW_SCOPE) &&
|
||||
oper->num_children == 1)
|
||||
return is_operation_type(&oper->children[0], type);
|
||||
else
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the given function is really just a wrapper for a
|
||||
* basic assembly instruction.
|
||||
|
|
@ -2636,17 +2619,6 @@ _slang_unroll_for_loop(slang_assemble_ctx * A, const slang_operation *oper)
|
|||
if (!slang_operation_copy(body, &oper->children[3]))
|
||||
return NULL;
|
||||
|
||||
/*
|
||||
* If we detect an if/break or if/continue lets do the real loop
|
||||
* and forget unrolling.
|
||||
*/
|
||||
if (body->children[1].type == SLANG_OPER_IF) {
|
||||
if (is_operation_type(&body->children[1].children[1], SLANG_OPER_BREAK))
|
||||
return NULL;
|
||||
if (is_operation_type(&body->children[1].children[1], SLANG_OPER_CONTINUE))
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* in body, replace instances of 'varId' with literal 'iter' */
|
||||
{
|
||||
slang_variable *oldVar;
|
||||
|
|
@ -2746,6 +2718,23 @@ _slang_gen_continue(slang_assemble_ctx * A, const slang_operation *oper)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine if the given operation is of a specific type.
|
||||
*/
|
||||
static GLboolean
|
||||
is_operation_type(const slang_operation *oper, slang_operation_type type)
|
||||
{
|
||||
if (oper->type == type)
|
||||
return GL_TRUE;
|
||||
else if ((oper->type == SLANG_OPER_BLOCK_NEW_SCOPE ||
|
||||
oper->type == SLANG_OPER_BLOCK_NO_NEW_SCOPE) &&
|
||||
oper->num_children == 1)
|
||||
return is_operation_type(&oper->children[0], type);
|
||||
else
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate IR tree for an if/then/else conditional using high-level
|
||||
* IR_IF instruction.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue