xref: /llvm-project/llvm/test/Transforms/GlobalOpt/X86/alias-used-with-asm.ll (revision 533b7c1f6c696817df332cc7c9acbe3b454eadf2)
1; RUN: opt < %s -passes=globalopt -S | FileCheck %s
2
3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4target triple = "x86_64-unknown-linux-gnu"
5
6module asm ".global foo1"
7module asm "foo1: jmp bar1"
8module asm ".global foo2"
9module asm "foo2: jmp bar2"
10
11; The `llvm.compiler.used` indicates that `foo1` and `foo2` have associated symbol references in asm.
12; Checking globalopt does not remove these two symbols.
13@llvm.compiler.used = appending global [2 x ptr] [ptr @bar1, ptr @bar2], section "llvm.metadata"
14; CHECK: @llvm.compiler.used = appending global [2 x ptr] [ptr @bar1, ptr @bar2], section "llvm.metadata"
15
16@bar2 = internal alias void (), ptr @bar1
17; CHECK: @bar2 = internal alias void (), ptr @bar1
18
19define internal void @bar1() {
20; CHECK: define internal void @bar1()
21  ret void
22}
23