[llvm] r352178 - [MSP430] Fix absolute addressing mode printing in AsmPrinter

Anton Korobeynikov via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 25 01:14:05 PST 2019


Author: asl
Date: Fri Jan 25 01:14:05 2019
New Revision: 352178

URL: http://llvm.org/viewvc/llvm-project?rev=352178&view=rev
Log:
[MSP430] Fix absolute addressing mode printing in AsmPrinter

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

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

Patch by Kristina Bessonova!

Differential Revision: https://reviews.llvm.org/D56785

Added:
    llvm/trunk/test/CodeGen/MSP430/inline-asm-absolute-addressing.ll
Modified:
    llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpp

Modified: llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpp?rev=352178&r1=352177&r2=352178&view=diff
==============================================================================
--- llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/MSP430/MSP430AsmPrinter.cpp Fri Jan 25 01:14:05 2019
@@ -113,12 +113,12 @@ void MSP430AsmPrinter::printSrcMemOperan
   // 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 << ')';

Added: llvm/trunk/test/CodeGen/MSP430/inline-asm-absolute-addressing.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MSP430/inline-asm-absolute-addressing.ll?rev=352178&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/MSP430/inline-asm-absolute-addressing.ll (added)
+++ llvm/trunk/test/CodeGen/MSP430/inline-asm-absolute-addressing.ll Fri Jan 25 01:14:05 2019
@@ -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
+}




More information about the llvm-commits mailing list