[llvm] 8b39341 - [PowerPC][AIX] Fix printing of program counter for AIX assembly.
Sean Fertile via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 12 07:37:57 PDT 2020
Author: Sean Fertile
Date: 2020-03-12T10:37:18-04:00
New Revision: 8b39341fb095a17a155db8cb3460b2853ab0f4d1
URL: https://github.com/llvm/llvm-project/commit/8b39341fb095a17a155db8cb3460b2853ab0f4d1
DIFF: https://github.com/llvm/llvm-project/commit/8b39341fb095a17a155db8cb3460b2853ab0f4d1.diff
LOG: [PowerPC][AIX] Fix printing of program counter for AIX assembly.
Program counter on AIX is the dollar-sign.
Differential Revision:https://reviews.llvm.org/D75627
Added:
llvm/test/CodeGen/PowerPC/aix-print-pc.mir
Modified:
llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp
index 2ff3f5d65a03..4dc2b3579d4b 100644
--- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp
+++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp
@@ -418,9 +418,14 @@ void PPCInstPrinter::printBranchOperand(const MCInst *MI, unsigned OpNo,
if (!MI->getOperand(OpNo).isImm())
return printOperand(MI, OpNo, O);
- // Branches can take an immediate operand. This is used by the branch
- // selection pass to print .+8, an eight byte displacement from the PC.
- O << ".";
+ // Branches can take an immediate operand. This is used by the branch
+ // selection pass to print, for example `.+8` (for ELF) or `$+8` (for AIX) to
+ // express an eight byte displacement from the program counter.
+ if (!TT.isOSAIX())
+ O << ".";
+ else
+ O << "$";
+
int32_t Imm = SignExtend32<32>((unsigned)MI->getOperand(OpNo).getImm() << 2);
if (Imm >= 0)
O << "+";
diff --git a/llvm/test/CodeGen/PowerPC/aix-print-pc.mir b/llvm/test/CodeGen/PowerPC/aix-print-pc.mir
new file mode 100644
index 000000000000..c736d138b892
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/aix-print-pc.mir
@@ -0,0 +1,31 @@
+# RUN: llc -x mir -mtriple powerpc-unknown-aix-xcoff --verify-machineinstrs \
+# RUN: -start-before=ppc-branch-select < %s | FileCheck %s
+#
+# RUN: llc -x mir -mtriple powerpc64-unknown-aix-xcoff --verify-machineinstrs \
+# RUN: -start-before=ppc-branch-select < %s | FileCheck %s
+
+# Test uses a long branch to force printing of a branch that uses the program
+# counter as an operand. ($PC + 8)
+
+---
+name: print_program_counter
+machineFunctionInfo: {}
+body: |
+ bb.0.entry:
+ successors: %bb.1(0x30000000), %bb.2(0x50000000)
+ liveins: $r3
+ renamable $cr0 = CMPLWI killed renamable $r3, 0
+ BCC 76, killed renamable $cr0, %bb.1
+ bb.2:
+ renamable $r3 = LI 2
+ INLINEASM &".space 32760", 1
+ BLR implicit $lr, implicit $rm, implicit killed $r3
+ bb.1:
+ renamable $r3 = LI 1
+ INLINEASM &".space 32760", 1
+ BLR implicit $lr, implicit $rm, implicit killed $r3
+
+# CHECK-LABEL: .print_program_counter:
+# CHECK: cmplwi
+# CHECK-NEXT: bne {{[0-9]}}, $+8
+
More information about the llvm-commits
mailing list