[llvm-commits] [llvm] r164807 - /llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp
David Peixotto
dpeixott at codeaurora.org
Tue Oct 2 14:07:01 PDT 2012
I'm seeing a new failure after this commit. I've produced a small test case
and reported the failure as http://llvm.org/bugs/show_bug.cgi?id=13999.
I'm not too familiar with the register allocator. Any chance someone could
take a look at this or provide some guidance?
Thanks,
David
-- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
by The Linux Foundation
> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
> bounces at cs.uiuc.edu] On Behalf Of Jakob Stoklund Olesen
> Sent: Thursday, September 27, 2012 4:32 PM
> To: llvm-commits at cs.uiuc.edu
> Subject: [llvm-commits] [llvm] r164807 -
> /llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp
>
> Author: stoklund
> Date: Thu Sep 27 18:31:32 2012
> New Revision: 164807
>
> URL: http://llvm.org/viewvc/llvm-project?rev=164807&view=rev
> Log:
> Remove <def,read-undef> flags from partial redefinitions.
>
> The new coalescer can turn a full virtual register definition into a
partial redef
> by merging another value into an unused vector lane.
>
> Make sure to clear the <read-undef> flag on such defs.
>
> Modified:
> llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp
>
> Modified: llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp?rev=164807&r1=164
> 806&r2=164807&view=diff
> ==========================================================
> ====================
> --- llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp (original)
> +++ llvm/trunk/lib/CodeGen/RegisterCoalescer.cpp Thu Sep 27 18:31:32
> +++ 2012
> @@ -1732,6 +1732,12 @@
> case CR_Replace:
> // This value takes precedence over the value in Other.LI.
> LIS->pruneValue(&Other.LI, Def, &EndPoints);
> + // Remove <def,read-undef> flags. This def is now a partial redef.
> + if (!Def.isBlock())
> + for (MIOperands MO(Indexes->getInstructionFromIndex(Def));
> + MO.isValid(); ++MO)
> + if (MO->isReg() && MO->isDef() && MO->getReg() == LI.reg)
> + MO->setIsUndef(false);
> DEBUG(dbgs() << "\t\tpruned " << PrintReg(Other.LI.reg) << " at "
<< Def
> << ": " << Other.LI << '\n');
> break;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list