Use the return value of UpdateNodeOperands(); in some cases, UpdateNodeOperands() modifies the node in-place and using the return value isn’t strictly necessary. However, it does not necessarily modify the node, but may return a resultant node if it already exists in the DAG. See comments in UpdateNodeOperands(). In that case, the return value must be used to avoid such scenarios as an infinite loop (node is assumed to have been updated, so added back to the worklist, and re-processed; however, node hasn’t changed so it is once again passed to UpdateNodeOperands(), assumed modified, added back to worklist; cycle infinitely repeats).
Details
Diff Detail
Event Timeline
test/CodeGen/AMDGPU/simplifydemandedbits-recursion.ll | ||
---|---|---|
1 | Nope; will not work on Windows; test adjusted. | |
1 | Yes, it works quite nicely on Linux; it will not work on Windows (thanks Simon) as ulimit is not available. I removed the ulimit. So, potentially, there may be a compiler regression that causes this to loop infinitely; however, I think that you could say that about any test. | |
16 | Updated the comments within the test; the purpose of the test is to verify that code was generated, not specifically that foo() is empty. | |
74 | Done. |
test/CodeGen/AMDGPU/simplifydemandedbits-recursion.ll | ||
---|---|---|
1 | Remove the brackets? Also, drop the prefix and use the default 'CHECK' ? |
test/CodeGen/AMDGPU/simplifydemandedbits-recursion.ll | ||
---|---|---|
1 | Done and done. |