[llvm-commits] [llvm] r74898 -/llvm/trunk/lib/CodeGen/PHIElimination.cpp

Sanjiv.Gupta at microchip.com Sanjiv.Gupta at microchip.com
Tue Jul 7 22:49:18 PDT 2009


We fixed this issue in our port by marking the cmp insn as isTerminator
= 1.
This way cmp and branch are both part of the terminator group and
PHIElimination does not insert a copy in between. So we don't need this
patch anymore.

- Sanjiv

> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
> bounces at cs.uiuc.edu] On Behalf Of Evan Cheng
> Sent: Tuesday, July 07, 2009 11:20 PM
> To: Commit Messages and Patches for LLVM
> Subject: Re: [llvm-commits] [llvm] r74898 -
> /llvm/trunk/lib/CodeGen/PHIElimination.cpp
> 
> This patch broke a whole bunch of tests. For example on Grawp-PIC:
> 
> New Test Failures:
> test/CodeGen/ARM/2008-11-19-ScavengerAssert.ll [DEJAGNU]
> test/CodeGen/X86/2006-05-02-InstrSched2.ll [DEJAGNU]
> test/CodeGen/X86/2008-05-21-CoalescerBug.ll for PR2343 [DEJAGNU]
> test/CodeGen/X86/stack-color-with-reg-2.ll [DEJAGNU]
> test/CodeGen/X86/twoaddr-pass-sink.ll [DEJAGNU]
> Applications/oggenc/oggenc [LLC compile, ]
> Benchmarks/ASCI_Purple/SMG2000/smg2000 [LLC compile, ]
> Benchmarks/mafft/pairlocalalign [LLC compile, ]
> Benchmarks/MallocBench/gs/gs [LLC compile, ]
> Benchmarks/mediabench/mpeg2/mpeg2dec/mpeg2decode [LLC compile, ]
> Benchmarks/MiBench/consumer-jpeg/consumer-jpeg [LLC compile, ]
> Benchmarks/MiBench/consumer-lame/consumer-lame [LLC compile, ]
> Benchmarks/Misc/whetstone [LLC compile, ]
> Benchmarks/Ptrdist/yacr2/yacr2 [LLC compile, ]
> Nurbs/nurbs [LLC compile, ]
> SPEC/CFP2006/433.milc/433.milc [LLC compile, ]
> SPEC/CINT2000/176.gcc/176.gcc [LLC compile, ]
> SPEC/CINT2000/254.gap/254.gap [LLC compile, ]
> SPEC/CINT2006/403.gcc/403.gcc [LLC compile, ]
> 
> 
> I'll back it out for now. Sanjiv, please investigate. Thanks.
> 
> 
> Evan
> 
> 
> On Jul 7, 2009, at 1:04 AM, Sanjiv Gupta wrote:
> 
> 
> 	Author: sgupta
> 	Date: Tue Jul  7 03:04:51 2009
> 	New Revision: 74898
> 
> 	URL: http://llvm.org/viewvc/llvm-project?rev=74898&view=rev
> 	Log:
> 	if the terminator is a branch depending upon the side effects of
a
> 	previous cmp; a copy can not be inserted here if the copy insn
also
> has
> 	side effects. We don't have access to the attributes of copy
insn
> here;
> 	so just play safe by finding a safe locations for branch
> terminators.
> 
> 	Modified:
> 	   llvm/trunk/lib/CodeGen/PHIElimination.cpp
> 
> 	Modified: llvm/trunk/lib/CodeGen/PHIElimination.cpp
> 	URL: http://llvm.org/viewvc/llvm-
>
project/llvm/trunk/lib/CodeGen/PHIElimination.cpp?rev=74898&r1=74897&r2=
74
> 898&view=diff
> 
>
====================================================================
> ==========
> 	--- llvm/trunk/lib/CodeGen/PHIElimination.cpp (original)
> 	+++ llvm/trunk/lib/CodeGen/PHIElimination.cpp Tue Jul  7
03:04:51
> 2009
> 	@@ -169,9 +169,15 @@
> 	    return MBB.begin();
> 
> 	  // If this basic block does not contain an invoke, then
control
> flow always
> 	-  // reaches the end of it, so place the copy there.  The logic
> below works in
> 	-  // this case too, but is more expensive.
> 	-  if (!isa<InvokeInst>(MBB.getBasicBlock()->getTerminator()))
> 	+  // reaches the end of it, so place the copy there.
> 	+  // If the terminator is a branch depending upon the side
effects
> of a
> 	+  // previous cmp; a copy can not be inserted here if the copy
insn
> also
> 	+  // side effects. We don't have access to the attributes of
copy
> insn here;
> 	+  // so just play safe by finding a safe locations for branch
> terminators.
> 	+  //
> 	+  // The logic below works in this case too, but is more
expensive.
> 	+  const TerminatorInst *TermInst = MBB.getBasicBlock()-
> >getTerminator();
> 	+  if (!(isa<InvokeInst>(TermInst) ||
isa<BranchInst>(TermInst)))
> 	    return MBB.getFirstTerminator();
> 
> 	  // Discover any definition/uses in this basic block.
> 
> 
> 	_______________________________________________
> 	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