ARM: bkpt has an implicit immediate constant 0
authorSaleem Abdulrasool <compnerd@compnerd.org>
Mon, 23 Dec 2013 17:23:58 +0000 (17:23 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Mon, 23 Dec 2013 17:23:58 +0000 (17:23 +0000)
The bkpt mnemonic has an implicit immediate constant of 0 unless otherwise
specified.  Add an instruction alias for the unvalued breakpoint mnemonic to
treat it as a 0.  This improves compatibility with GNU AS.

Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197913 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrInfo.td
lib/Target/ARM/ARMInstrThumb.td
test/MC/ARM/bkpt.s [new file with mode: 0644]

index ad500eacad0a9bb85992ca963cfd929ba898ce14..e778bc8f4fae391239c00fdbe7ff849696f3a5f4 100644 (file)
@@ -1725,6 +1725,8 @@ def BKPT : AInoP<(outs), (ins imm0_65535:$val), MiscFrm, NoItinerary,
   let Inst{31-28} = 0xe; // AL
   let Inst{7-4} = 0b0111;
 }
+// default immediate for breakpoint mnemonic
+def : InstAlias<"bkpt", (BKPT 0)>, Requires<[IsARM]>;
 
 def HLT : AInoP<(outs), (ins imm0_65535:$val), MiscFrm, NoItinerary,
                  "hlt", "\t$val", []>, Requires<[IsARM, HasV8]> {
index 250b3c6f2c6653e1b3bec0a99d07432f316e4b00..f6d233a39c5accdc930234af4ca68432a751cb05 100644 (file)
@@ -300,6 +300,8 @@ def tBKPT : T1I<(outs), (ins imm0_255:$val), NoItinerary, "bkpt\t$val",
   bits<8> val;
   let Inst{7-0} = val;
 }
+// default immediate for breakpoint mnemonic
+def : InstAlias<"bkpt", (tBKPT 0)>, Requires<[IsThumb]>;
 
 def tHLT : T1I<(outs), (ins imm0_63:$val), NoItinerary, "hlt\t$val",
                 []>, T1Encoding<0b101110>, Requires<[IsThumb, HasV8]> {
diff --git a/test/MC/ARM/bkpt.s b/test/MC/ARM/bkpt.s
new file mode 100644 (file)
index 0000000..fcd4040
--- /dev/null
@@ -0,0 +1,32 @@
+@ RUN: llvm-mc -triple armv7-unknown-unknown -filetype asm -o - %s | FileCheck %s
+
+       .syntax unified
+       .thumb
+
+       .global thumb_default_bkpt
+       .type thumb_default_bkpt, %function
+       .thumb_func
+thumb_default_bkpt:
+       bkpt
+
+@ CHECK-LABEL: thumb_default_bkpt
+@ CHECK: bkpt #0
+
+       .global normal_bkpt
+       .type normal_bkpt, %function
+normal_bkpt:
+       bkpt #42
+
+@ CHECK-LABEL: normal_bkpt
+@ CHECK: bkpt #42
+
+       .arm
+
+       .global arm_default_bkpt
+       .type arm_default_bkpt, %function
+arm_default_bkpt:
+       bkpt
+
+@ CEHCK-LABEL: arm_default_bkpt
+@ CHECK: bkpt #0
+