[PATCH] D41967: [PPC] Return PPC::CARRY for inline asm constraint "{xer}"

Guozhi Wei via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 11 14:55:31 PST 2018


Carrot created this revision.
Carrot added reviewers: hfinkel, nemanjai, echristo.
Herald added a subscriber: kbarton.

When "xer" is specified as clobbered register in inline assembler, clang can accept it, but llvm simply ignore it when lowered to machine instructions. It may cause problems later in scheduler.

This patch checks the inline asm constraint "{xer}" and returns PPC::CARRY in function PPCTargetLowering::getRegForInlineAsmConstraint.


https://reviews.llvm.org/D41967

Files:
  lib/Target/PowerPC/PPCISelLowering.cpp


Index: lib/Target/PowerPC/PPCISelLowering.cpp
===================================================================
--- lib/Target/PowerPC/PPCISelLowering.cpp
+++ lib/Target/PowerPC/PPCISelLowering.cpp
@@ -13084,6 +13084,9 @@
       return std::make_pair(0U, &PPC::VSSRCRegClass);
     else
       return std::make_pair(0U, &PPC::VSFRCRegClass);
+  } else if (Constraint == "{xer}") {
+    // The only interesting bit of XER is CARRY.
+    return std::make_pair(PPC::CARRY, &PPC::CARRYRCRegClass);
   }
 
   std::pair<unsigned, const TargetRegisterClass *> R =


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D41967.129533.patch
Type: text/x-patch
Size: 559 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180111/6d399105/attachment.bin>


More information about the llvm-commits mailing list