Skip to content
This repository has been archived by the owner on Apr 23, 2020. It is now read-only.

Commit

Permalink
[MSP430] Fix absolute addressing mode printing in AsmPrinter
Browse files Browse the repository at this point in the history
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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352178 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
asl committed Jan 25, 2019
1 parent 4792786 commit 647ece5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/Target/MSP430/MSP430AsmPrinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,12 @@ void MSP430AsmPrinter::printSrcMemOperand(const MachineInstr *MI, int OpNum,
// 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 << ')';
Expand Down
15 changes: 15 additions & 0 deletions test/CodeGen/MSP430/inline-asm-absolute-addressing.ll
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit 647ece5

Please sign in to comment.