Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Unified Diff: test/NaCl/ARM/GOT-with-disabled-constpools.ll

Issue 939073008: Rebased PNaCl localmods in LLVM to 223109 (Closed)
Patch Set: undo localmod Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/MC/X86/elf-note-nacl.ll ('k') | test/NaCl/ARM/avoid-aeabi-functions.ll » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/NaCl/ARM/GOT-with-disabled-constpools.ll
diff --git a/test/NaCl/ARM/GOT-with-disabled-constpools.ll b/test/NaCl/ARM/GOT-with-disabled-constpools.ll
new file mode 100644
index 0000000000000000000000000000000000000000..cbe9dd8a646f27330f0827d8a46bfa51e62fec76
--- /dev/null
+++ b/test/NaCl/ARM/GOT-with-disabled-constpools.ll
@@ -0,0 +1,49 @@
+; RUN: pnacl-llc -mtriple=armv7a-none-nacl-gnueabi %s -filetype=obj \
+; RUN: -relocation-model=pic -mattr=+neon \
+; RUN: -O0 -mcpu=cortex-a9 -o - \
+; RUN: | llvm-objdump -disassemble -r -triple armv7 - | FileCheck %s
+
+; This test exercises NaCl (which doesn't use constant islands)
+; together with -relocation-model=pic, to see that a movw/movt
+; is actually generated as expected. Use -O0 so that movw/movt
+; are scheduled to be adjacent, instead of having other independent
+; instructions interleaved.
+
+%struct.object = type { [16 x i8*] }
+
+@__do_eh_ctor.object = internal global %struct.object zeroinitializer, align 8
+@__EH_FRAME_BEGIN__ = internal global [0 x i8] zeroinitializer, section ".eh_frame", align 4
+@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @__do_eh_ctor }]
+
+declare void @__register_frame_info(i8* %begin, %struct.object* %ob)
+
+define internal void @__do_eh_ctor() {
+entry:
+ call void @__register_frame_info(i8* getelementptr inbounds ([0 x i8]* @__EH_FRAME_BEGIN__, i32 0, i32 0), %struct.object* @__do_eh_ctor.object)
+; CHECK-LABEL: __do_eh_ctor
+
+; CHECK: movw r[[REG0:[0-9]+]]
+; CHECK-NEXT: R_ARM_MOVW_PREL_NC .LCPI
+; CHECK-NEXT: movt r[[REG0]]
+; CHECK-NEXT: R_ARM_MOVT_PREL .LCPI
+; CHECK-NEXT: add r[[REG0]], pc, r[[REG0]]
+; CHECK: ldr r[[REG0]], {{\[}}r[[REG0]]{{\]}}
+
+; CHECK: movw r[[REG1:[0-9]+]]
+; CHECK-NEXT: R_ARM_MOVW_PREL_NC _GLOBAL_OFFSET_TABLE_
+; CHECK-NEXT: movt r[[REG1]]
+; CHECK-NEXT: R_ARM_MOVT_PREL _GLOBAL_OFFSET_TABLE_
+; CHECK-NEXT: add r[[REG1]], pc, r[[REG1]]
+; CHECK: add r[[REG0]], r[[REG0]], r[[REG1]]
+
+; CHECK: movw r[[REG2:[0-9]+]]
+; CHECK-NEXT: R_ARM_MOVW_PREL_NC .LCPI
+; CHECK-NEXT: movt r[[REG2]]
+; CHECK-NEXT: R_ARM_MOVT_PREL .LCPI
+; CHECK-NEXT: add r[[REG2]], pc, r[[REG2]]
+; CHECK: ldr r[[REG2]], {{\[}}r[[REG2]]{{\]}}
+; CHECK: add r[[REG1]], r[[REG2]], r[[REG1]]
+
+ ret void
+}
+
« no previous file with comments | « test/MC/X86/elf-note-nacl.ll ('k') | test/NaCl/ARM/avoid-aeabi-functions.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698