| ; Inlining should not clone label annotations. | |
| ; Currently we block all duplication for simplicity. | |
| ; RUN: opt < %s -S -passes=inline | FileCheck %s | |
| @the_global = global i32 0 | |
| declare void @llvm.codeview.annotation(metadata) | |
| define void @inlinee() { | |
| entry: | |
| store i32 42, ptr @the_global | |
| call void @llvm.codeview.annotation(metadata !0) | |
| ret void | |
| } | |
| define void @caller() { | |
| entry: | |
| call void @inlinee() | |
| ret void | |
| } | |
| !0 = !{!"annotation"} | |
| ; CHECK-LABEL: define void @inlinee() | |
| ; CHECK: store i32 42, ptr @the_global | |
| ; CHECK: call void @llvm.codeview.annotation(metadata !0) | |
| ; CHECK: ret void | |
| ; CHECK-LABEL: define void @caller() | |
| ; MSVC can inline this. If we ever do, check for the store but make sure | |
| ; there is no annotation. | |
| ; CHECK: call void @inlinee() | |
| ; CHECK-NOT: call void @llvm.codeview.annotation | |
| ; CHECK: ret void |