[llvm-dev] Invalid llvm-ir and unreachable code
Jeroen Dobbelaere via llvm-dev
llvm-dev at lists.llvm.org
Fri Mar 12 00:47:11 PST 2021
Hi all,
I have found a case where an optimization pass is barfing on invalid code in an unreachable
basic block. A self referencing GEP '%x = getelementptr %x, 0, 1' is found inside a cycle of
two unreachable basic blocks)
The invalid code and the unreachable basic blocks were introduced by the function inliner.
I am wondering what is valid for these cases ?
(I did not find anything in LangRef, but I might as well have missed it)
- clearly 'dead code' (aka unreachable basic blocks) is valid in an IR ?
- I assume that the self reference in dead code is not valid ?
- should inlining do an extra effort of cleaning up such dead code blocks ?
Thanks,
Jeroen Dobbelaere
More information about the llvm-dev
mailing list