| ; RUN: opt -S -globalopt < %s | FileCheck %s |
| |
| ; PR6112 - When globalopt does RAUW(@G, %G), the metadata reference should drop |
| ; to null. Function local metadata that references @G from a different function |
| ; to that containing %G should likewise drop to null. |
| @G = internal global i8** null |
| |
| define i32 @main(i32 %argc, i8** %argv) { |
| ; CHECK: @main |
| ; CHECK: %G = alloca |
| store i8** %argv, i8*** @G |
| ret i32 0 |
| } |
| |
| define void @foo(i32 %x) { |
| call void @llvm.foo(metadata !{i8*** @G, i32 %x}) |
| ; CHECK: call void @llvm.foo(metadata !{null, i32 %x}) |
| ret void |
| } |
| |
| declare void @llvm.foo(metadata) nounwind readnone |
| |
| !named = !{!0} |
| |
| !0 = metadata !{i8*** @G} |
| ; CHECK: !0 = metadata !{null} |