brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 7137bb1 Raw
68 lines · plain
1; RUN: opt < %s -passes=globalopt -S | FileCheck %s2 3@c = dso_local global i8 424 5; CHECK: @i = internal global i8 426@i = internal global i8 427; CHECK-DAG: @ia = internal alias i8, ptr @i8@ia = internal alias i8, ptr @i9 10@llvm.used = appending global [3 x ptr] [ptr @fa, ptr @f, ptr @ca], section "llvm.metadata"11; CHECK-DAG: @llvm.used = appending global [3 x ptr] [ptr @ca, ptr @f, ptr @fa], section "llvm.metadata"12 13@llvm.compiler.used = appending global [4 x ptr] [ptr @fa3, ptr @fa, ptr @ia, ptr @i], section "llvm.metadata"14; CHECK-DAG: @llvm.compiler.used = appending global [3 x ptr] [ptr @fa3, ptr @i, ptr @ia], section "llvm.metadata"15 16@sameAsUsed = global [3 x ptr] [ptr @fa, ptr @f, ptr @ca]17; CHECK-DAG: @sameAsUsed = local_unnamed_addr global [3 x ptr] [ptr @f, ptr @f, ptr @c]18 19@other = global ptr @fa20; CHECK-DAG: @other = local_unnamed_addr global ptr @f21 22@fa = internal alias void (), ptr @f23; CHECK: @fa = internal alias void (), ptr @f24 25@fa2 = internal alias void (), ptr @f26; CHECK-NOT: @fa227 28@fa3 = internal alias void (), ptr @f29; CHECK: @fa330 31@ca = internal alias i8, ptr @c32; CHECK: @ca = internal alias i8, ptr @c33 34define hidden void @f() {35  ret void36}37 38define ptr @g() {39  ret ptr @fa;40}41 42define ptr @g2() {43  ret ptr @fa2;44}45 46define ptr @h() {47  ret ptr @ca48}49 50; Check that GlobalOpt doesn't try to resolve aliases with GEP operands.51 52%struct.S = type { i32, i32, i32 }53@s = global %struct.S { i32 1, i32 2, i32 3 }, align 454 55@alias1 = alias i32, ptr getelementptr inbounds (%struct.S, ptr @s, i64 0, i32 1)56@alias2 = alias i32, ptr getelementptr inbounds (%struct.S, ptr @s, i64 0, i32 2)57 58; CHECK: load i32, ptr @alias1, align 459; CHECK: load i32, ptr @alias2, align 460 61define i32 @foo1() {62entry:63  %0 = load i32, ptr @alias1, align 464  %1 = load i32, ptr @alias2, align 465  %add = add nsw i32 %1, %066  ret i32 %add67}68