[PATCH] D22400: Fix RegMask calculation for alias registers
Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 20 20:58:15 PDT 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL276235: IPRA: Fix RegMask calculation for alias registers (authored by matze).
Changed prior to commit:
https://reviews.llvm.org/D22400?vs=64090&id=64815#toc
Repository:
rL LLVM
https://reviews.llvm.org/D22400
Files:
llvm/trunk/lib/CodeGen/RegUsageInfoCollector.cpp
llvm/trunk/test/CodeGen/X86/ipra-reg-alias.ll
Index: llvm/trunk/test/CodeGen/X86/ipra-reg-alias.ll
===================================================================
--- llvm/trunk/test/CodeGen/X86/ipra-reg-alias.ll
+++ llvm/trunk/test/CodeGen/X86/ipra-reg-alias.ll
@@ -0,0 +1,12 @@
+; RUN: llc -enable-ipra -print-regusage -o /dev/null 2>&1 < %s | FileCheck %s
+target triple = "x86_64--"
+
+define i8 @main(i8 %X) {
+ %inc = add i8 %X, 1
+ %inc2 = mul i8 %inc, 5
+; Here only CL is clobbred so CH should not be clobbred, but CX, ECX and RCX
+; should be clobbered.
+; CHECK: main Clobbered Registers: AH AL AX CL CX EAX ECX EFLAGS RAX RCX
+ ret i8 %inc2
+}
+
Index: llvm/trunk/lib/CodeGen/RegUsageInfoCollector.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/RegUsageInfoCollector.cpp
+++ llvm/trunk/lib/CodeGen/RegUsageInfoCollector.cpp
@@ -57,10 +57,6 @@
bool runOnMachineFunction(MachineFunction &MF) override;
static char ID;
-
-private:
- void markRegClobbered(const TargetRegisterInfo *TRI, uint32_t *RegMask,
- unsigned PReg);
};
} // end of anonymous namespace
@@ -76,13 +72,6 @@
return new RegUsageInfoCollector();
}
-void RegUsageInfoCollector::markRegClobbered(const TargetRegisterInfo *TRI,
- uint32_t *RegMask, unsigned PReg) {
- // If PReg is clobbered then all of its alias are also clobbered.
- for (MCRegAliasIterator AI(PReg, TRI, true); AI.isValid(); ++AI)
- RegMask[*AI / 32] &= ~(1u << *AI % 32);
-}
-
void RegUsageInfoCollector::getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequired<PhysicalRegisterUsageInfo>();
AU.setPreservesAll();
@@ -116,7 +105,7 @@
for (unsigned PReg = 1, PRegE = TRI->getNumRegs(); PReg < PRegE; ++PReg)
if (MRI->isPhysRegModified(PReg, true))
- markRegClobbered(TRI, &RegMask[0], PReg);
+ RegMask[PReg / 32] &= ~(1u << PReg % 32);
if (!TargetFrameLowering::isSafeForNoCSROpt(F)) {
const uint32_t *CallPreservedMask =
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D22400.64815.patch
Type: text/x-patch
Size: 2008 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160721/9cef23b5/attachment.bin>
More information about the llvm-commits
mailing list