Sometimes, when RuleIgnoreNan tries to remove NAN-branches from conditionals, it is too aggressive and also removes other branches, leading to incorrect decompiler output. By returning a null pointer if the NAN flow has been removed by replacing the boolean operation such as BOOL_AND or BOOL_OR by a COPY operation, we avoid descending down further and removing too much of the tree.
Sometimes, when
RuleIgnoreNan
tries to removeNAN
-branches from conditionals, it is too aggressive and also removes other branches, leading to incorrect decompiler output. By returning a null pointer if theNAN
flow has been removed by replacing the boolean operation such asBOOL_AND
orBOOL_OR
by aCOPY
operation, we avoid descending down further and removing too much of the tree.Fixes #6580