[cfe-users] detect default in SwitchInst

2021-07-16 Thread Bella V via cfe-users
Hello All, I'm trying to find whether SwitchInst has a default statement. I'm able to iterate through the case values using case_begin and case_end. If I try to detect default using case_default which returns an iterator which points to the default case. Code Example: case_default()->getCaseIn

Re: [cfe-users] detect default in SwitchInst

2021-07-16 Thread David Blaikie via cfe-users
LLVM IR switch instructions always have a default: https://llvm.org/docs/LangRef.html#switch-instruction - that jumps over the body of the switch. (when lowering C code to LLVM IR the default would be put after the loop, and the breaks from any case statements would jump over that default block) O

Re: [cfe-users] detect default in SwitchInst

2021-07-16 Thread Bella V via cfe-users
In my case, for a function having a default statement in switch i could see a BB with label as sw.default is created: switch i32 %0, label %sw.*default* [ ] sw.default: br label %sw.epilog For a non-default switch statement function: switch i32 %1, label %sw.epilog [ ] On Fri, Jul 16, 2021 at 1

Re: [cfe-users] detect default in SwitchInst

2021-07-16 Thread David Blaikie via cfe-users
Ah, LLVM IR isn't really the place to determine how the source was written - the names of those LLVM values aren't always preserved (generally in optimized builds of clang the names will not be generated) - that said, even some LLVM features rely on the names, so it's not totally unusable. You can