| 1 store void (...) bitcast (void () @func2 to void |
| (...)), void (...) %2, align 8 // Assign the |
| address of the function bar to %2 |
| 2 %4 = load void (...), void (...) %2, align 8 // |
| Assign %2 to %4 |
| 3 %5 = bitcast void (...) %4 to i8, !nosanitize !3 |
| 4 %6 = call i1 @llvm.bitset.test(i8 %5, metadata !" |
| _ZTSFvE_test.c_13"), !nosanitize !3 // Determine |
| if %5 is in the bitset set corresponding to |
| _ZTSFvE_test.c_13 |
| 5 br i1 %6, label %8, label %7, !nosanitize !3 |
| 6 |
| 7; <label>:7: ; preds = %0 |
| 8 call void @llvm.trap() #2, !nosanitize !3 |
| 9 unreachable, !nosanitize !3 |
| 10 |
| 11; <label>:8: ; preds = %0 |
| 12 call void (...) %4() |
| 13 |
| 14 !llvm.bitsets = !!0, !1} |
| 15 |
| 16 !0 = !!"_ZTSFvE_test.c_16", void () @foo, i64 0} |
| 17 !1 = !!"_ZTSFvE_test.c_16", void () @bar, i64 0} |