summaryrefslogtreecommitdiffstats
path: root/test/CodeGen/X86/hidden-vis-pic.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/X86/hidden-vis-pic.ll')
-rw-r--r--test/CodeGen/X86/hidden-vis-pic.ll55
1 files changed, 55 insertions, 0 deletions
diff --git a/test/CodeGen/X86/hidden-vis-pic.ll b/test/CodeGen/X86/hidden-vis-pic.ll
new file mode 100644
index 0000000..ba130a2
--- /dev/null
+++ b/test/CodeGen/X86/hidden-vis-pic.ll
@@ -0,0 +1,55 @@
+; RUN: llc < %s -mtriple=i386-apple-darwin9 -relocation-model=pic -disable-fp-elim -unwind-tables | FileCheck %s
+
+
+
+; PR7353 PR7334 rdar://8072315 rdar://8018308
+
+define available_externally hidden
+void @_ZNSbIcED1Ev() nounwind readnone ssp align 2 {
+entry:
+ ret void
+}
+
+define void()* @test1() nounwind {
+entry:
+ ret void()* @_ZNSbIcED1Ev
+}
+
+; This must use movl of the stub, not an lea, since the function isn't being
+; emitted here.
+; CHECK: movl L__ZNSbIcED1Ev$non_lazy_ptr-L1$pb(
+
+
+
+
+; <rdar://problem/7383328>
+
+@.str = private constant [12 x i8] c"hello world\00", align 1 ; <[12 x i8]*> [#uses=1]
+
+define hidden void @func() nounwind ssp {
+entry:
+ %0 = call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @.str, i64 0, i64 0)) nounwind ; <i32> [#uses=0]
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+declare i32 @puts(i8*)
+
+define hidden i32 @main() nounwind ssp {
+entry:
+ %retval = alloca i32 ; <i32*> [#uses=1]
+ %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
+ call void @func() nounwind
+ br label %return
+
+return: ; preds = %entry
+ %retval1 = load i32* %retval ; <i32> [#uses=1]
+ ret i32 %retval1
+}
+
+; CHECK: .private_extern _func.eh
+; CHECK: .private_extern _main.eh
+
+
OpenPOWER on IntegriCloud