Generate correct asm info for mingw and cygwin ARM targets.
authorYaron Keren <yaron.keren@gmail.com>
Tue, 14 Jul 2015 05:51:05 +0000 (05:51 +0000)
committerYaron Keren <yaron.keren@gmail.com>
Tue, 14 Jul 2015 05:51:05 +0000 (05:51 +0000)
http://reviews.llvm.org/D11075

Patch by Martell Malone
Reviewed by Reid Kleckner

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242123 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
test/CodeGen/ARM/Windows/hard-float.ll
test/CodeGen/ARM/Windows/no-arm-mode.ll
test/CodeGen/ARM/Windows/pic.ll
test/CodeGen/ARM/Windows/structors.ll

index dd26e4b9bfe7f62a4a69443ea144df7d6698f6d3..21c9fc1e58b296c21ec16b03773e5058af80824a 100644 (file)
@@ -277,10 +277,10 @@ static MCAsmInfo *createARMMCAsmInfo(const MCRegisterInfo &MRI,
   MCAsmInfo *MAI;
   if (TheTriple.isOSDarwin() || TheTriple.isOSBinFormatMachO())
     MAI = new ARMMCAsmInfoDarwin(TheTriple);
-  else if (TheTriple.isWindowsItaniumEnvironment())
-    MAI = new ARMCOFFMCAsmInfoGNU();
   else if (TheTriple.isWindowsMSVCEnvironment())
     MAI = new ARMCOFFMCAsmInfoMicrosoft();
+  else if (TheTriple.isOSWindows())
+    MAI = new ARMCOFFMCAsmInfoGNU();
   else
     MAI = new ARMELFMCAsmInfo(TheTriple);
 
index f7b7ec273ce89659bc2770e84e59ba72ed841d3b..1ce02813dfc2fdd824b2b7b73b7938139ddc1983 100644 (file)
@@ -1,4 +1,8 @@
-; RUN: llc -mtriple=thumbv7-windows-itanium -mcpu=cortex-a9 -o - %s | FileCheck %s
+; RUN: llc -mtriple=thumbv7-windows-itanium -mcpu=cortex-a9 -o - %s \
+; RUN:   | FileCheck %s -check-prefix CHECK-WIN
+
+; RUN: llc -mtriple=thumbv7-windows-gnu -mcpu=cortex-a9 -o - %s \
+; RUN:   | FileCheck %s -check-prefix CHECK-GNU
 
 define float @function(float %f, float %g) nounwind {
 entry:
@@ -6,5 +10,7 @@ entry:
   ret float %h
 }
 
-; CHECK: vadd.f32 s0, s0, s1
+; CHECK-WIN: vadd.f32 s0, s0, s1
+
+; CHECK-GNU: vadd.f32 s0, s0, s1
 
index 6db031fc9169a155fd193c162664f384b1d57d6b..30353640a4cc37fb73f65c96d8942f0c5cb0e75b 100644 (file)
@@ -1,5 +1,10 @@
 ; RUN: not llc -mtriple=armv7-windows-itanium -mcpu=cortex-a9 -o /dev/null %s 2>&1 \
-; RUN:  | FileCheck %s
+; RUN:   | FileCheck %s -check-prefix CHECK-WIN
 
-; CHECK: does not support ARM mode execution
+; RUN: not llc -mtriple=armv7-windows-gnu -mcpu=cortex-a9 -o /dev/null %s 2>&1 \
+; RUN:   | FileCheck %s -check-prefix CHECK-GNU
+
+; CHECK-WIN: does not support ARM mode execution
+
+; CHECK-GNU: does not support ARM mode execution
 
index 9ef7c35c55304dd76fcf96ec18490b1fffdc6bca..df4c400035a3a02a158a90841843bebae8c1a506 100644 (file)
@@ -1,5 +1,8 @@
 ; RUN: llc -mtriple thumbv7-windows-itanium -relocation-model pic -filetype asm -o - %s \
-; RUN:    | FileCheck %s
+; RUN:   | FileCheck %s -check-prefix CHECK-WIN
+
+; RUN: llc -mtriple thumbv7-windows-gnu -relocation-model pic -filetype asm -o - %s \
+; RUN:   | FileCheck %s -check-prefix CHECK-GNU
 
 @external = external global i8
 
@@ -9,8 +12,12 @@ entry:
   ret i8 %0
 }
 
-; CHECK-LABEL: return_external
-; CHECK: movw r0, :lower16:external
-; CHECK: movt r0, :upper16:external
-; CHECK: ldrb r0, [r0]
+; CHECK-WIN-LABEL: return_external
+; CHECK-WIN: movw r0, :lower16:external
+; CHECK-WIN: movt r0, :upper16:external
+; CHECK-WIN: ldrb r0, [r0]
 
+; CHECK-GNU-LABEL: return_external
+; CHECK-GNU: movw r0, :lower16:external
+; CHECK-GNU: movt r0, :upper16:external
+; CHECK-GNU: ldrb r0, [r0]
index 874b5bf35b81b37cf1966b698d295854857d1aac..eff1c7f4b3845db0e4013e8ab0c06e1a56040d68 100644 (file)
@@ -1,4 +1,8 @@
-; RUN: llc -mtriple thumbv7-windows-itanium -o - %s | FileCheck %s
+; RUN: llc -mtriple thumbv7-windows-itanium -o - %s \
+; RUN:   | FileCheck %s -check-prefix CHECK-WIN
+
+; RUN: llc -mtriple thumbv7-windows-gnu -o - %s \
+; RUN:   | FileCheck %s -check-prefix CHECK-GNU
 
 @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @function, i8* null }]
 
@@ -7,6 +11,8 @@ entry:
   ret void
 }
 
-; CHECK: .section .CRT$XCU,"dr"
-; CHECK: .long function
+; CHECK-WIN: .section .CRT$XCU,"dr"
+; CHECK-WIN: .long function
 
+; CHECK-GNU: .section .ctors,"dw"
+; CHECK-GNU: .long function