summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/AArch64/win_cst_pool.ll
diff options
context:
space:
mode:
authorMartin Storsjo <martin@martin.st>2018-07-26 10:48:20 +0000
committerMartin Storsjo <martin@martin.st>2018-07-26 10:48:20 +0000
commit9dafd6f6d93ca67f63c09aa091b28ddf88ddfc14 (patch)
treea2f14c53c1e849702c27d0b31cc051bc8662bcdd /llvm/test/CodeGen/AArch64/win_cst_pool.ll
parentbea258d3d7ce297807671d493619065a68366347 (diff)
downloadbcm5719-llvm-9dafd6f6d93ca67f63c09aa091b28ddf88ddfc14.tar.gz
bcm5719-llvm-9dafd6f6d93ca67f63c09aa091b28ddf88ddfc14.zip
Revert "[COFF] Use comdat shared constants for MinGW as well"
This reverts commit r337951. While that kind of shared constant generally works fine in a MinGW setting, it broke some cases of inline assembly that worked before: $ cat const-asm.c int MULH(int a, int b) { int rt, dummy; __asm__ ( "imull %3" :"=d"(rt), "=a"(dummy) :"a"(a), "rm"(b) ); return rt; } int func(int a) { return MULH(a, 1); } $ clang -target x86_64-win32-gnu -c const-asm.c -O2 const-asm.c:4:9: error: invalid variant '00000001' "imull %3" ^ <inline asm>:1:15: note: instantiated into assembly here imull __real@00000001(%rip) ^ A similar error is produced for i686 as well. The same test with a target of x86_64-win32-msvc or i686-win32-msvc works fine. llvm-svn: 338018
Diffstat (limited to 'llvm/test/CodeGen/AArch64/win_cst_pool.ll')
-rw-r--r--llvm/test/CodeGen/AArch64/win_cst_pool.ll11
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/AArch64/win_cst_pool.ll b/llvm/test/CodeGen/AArch64/win_cst_pool.ll
index 9e78702980c..5bcc9194c79 100644
--- a/llvm/test/CodeGen/AArch64/win_cst_pool.ll
+++ b/llvm/test/CodeGen/AArch64/win_cst_pool.ll
@@ -1,5 +1,5 @@
; RUN: llc < %s -mtriple=aarch64-win32-msvc | FileCheck %s
-; RUN: llc < %s -mtriple=aarch64-win32-gnu | FileCheck %s
+; RUN: llc < %s -mtriple=aarch64-win32-gnu | FileCheck -check-prefix=MINGW %s
define double @double() {
ret double 0x0000000000800000
@@ -13,3 +13,12 @@ define double @double() {
; CHECK: adrp x8, __real@0000000000800000
; CHECK-NEXT: ldr d0, [x8, __real@0000000000800000]
; CHECK-NEXT: ret
+
+; MINGW: .section .rdata,"dr"
+; MINGW-NEXT: .p2align 3
+; MINGW-NEXT: [[LABEL:\.LC.*]]:
+; MINGW-NEXT: .xword 8388608
+; MINGW: double:
+; MINGW: adrp x8, [[LABEL]]
+; MINGW-NEXT: ldr d0, [x8, [[LABEL]]]
+; MINGW-NEXT: ret
OpenPOWER on IntegriCloud