[PATCH] D56785: [MSP430] Fix absolute addressing mode printing in AsmPrinter

Kristina Bessonova via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 16 07:47:36 PST 2019


krisb created this revision.
krisb added a reviewer: asl.
Herald added subscribers: llvm-commits, eraman.

Align checks for absolute addressing mode with its current
implementation (SR is used as a base register).

It fixes https://bugs.llvm.org/show_bug.cgi?id=39993


Repository:
  rL LLVM

https://reviews.llvm.org/D56785

Files:
  lib/Target/MSP430/MSP430AsmPrinter.cpp
  test/CodeGen/MSP430/inline-asm-absolute-addressing.ll


Index: test/CodeGen/MSP430/inline-asm-absolute-addressing.ll
===================================================================
--- /dev/null
+++ test/CodeGen/MSP430/inline-asm-absolute-addressing.ll
@@ -0,0 +1,15 @@
+; RUN: llc < %s | FileCheck %s
+
+; Check that absolute addressing mode is represented in a way
+; defined in MSP430 EABI and not as indexed addressing mode form.
+; See PR39993 for details.
+
+target datalayout = "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8-n8:16"
+target triple = "msp430-elf"
+
+define void @f() {
+entry:
+; CHECK: mov r1, &256
+  call void asm sideeffect "mov r1, $0", "*m"(i8* inttoptr (i16 256 to i8*))
+  ret void
+}
Index: lib/Target/MSP430/MSP430AsmPrinter.cpp
===================================================================
--- lib/Target/MSP430/MSP430AsmPrinter.cpp
+++ lib/Target/MSP430/MSP430AsmPrinter.cpp
@@ -114,12 +114,12 @@
   // Print displacement first
 
   // Imm here is in fact global address - print extra modifier.
-  if (Disp.isImm() && !Base.getReg())
+  if (Disp.isImm() && Base.getReg() == MSP430::SR)
     O << '&';
   printOperand(MI, OpNum+1, O, "nohash");
 
   // Print register base field
-  if (Base.getReg()) {
+  if (Base.getReg() != MSP430::SR && Base.getReg() != MSP430::PC) {
     O << '(';
     printOperand(MI, OpNum, O);
     O << ')';


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D56785.182048.patch
Type: text/x-patch
Size: 1310 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190116/b975b6f9/attachment.bin>


More information about the llvm-commits mailing list