[llvm-commits] [llvm] r49243 - /llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

Evan Cheng evan.cheng at apple.com
Sat Apr 5 01:57:56 PDT 2008


Is this fixing a regression from Dan's patch? Can you separate out the  
flushing functionality from getroot? It seems a bit strange to use  
getRoot for its side effects.

Evan

On Apr 4, 2008, at 4:48 PM, Dale Johannesen <dalej at apple.com> wrote:

> Author: johannes
> Date: Fri Apr  4 18:48:31 2008
> New Revision: 49243
>
> URL: http://llvm.org/viewvc/llvm-project?rev=49243&view=rev
> Log:
> Make sure both PendingLoads and PendingExports are flushed
> before an invoke.  Failure to do this causes references in
> the landing pad to variables that were not set.  Fixes
> g++.dg/eh/delayslot1.C
> g++.dg/eh/fp-regs.C
> g++.old-deja/g++.brendan/eh1.C
>
>
> Modified:
>    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
>
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp?rev=49243&r1=49242&r2=49243&view=diff
>
> === 
> === 
> === 
> =====================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp  
> (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Fri  
> Apr  4 18:48:31 2008
> @@ -3171,7 +3171,10 @@
>     // Insert a label before the invoke call to mark the try range.   
> This can be
>     // used to detect deletion of the invoke via the  
> MachineModuleInfo.
>     BeginLabel = MMI->NextLabelID();
> -    DAG.setRoot(DAG.getNode(ISD::LABEL, MVT::Other, getRoot(),
> +    // Both PendingLoads and PendingExports must be flushed here;
> +    // this call might not return.
> +    (void)getRoot();
> +    DAG.setRoot(DAG.getNode(ISD::LABEL, MVT::Other, getControlRoot(),
>                             DAG.getConstant(BeginLabel, MVT::i32),
>                             DAG.getConstant(1, MVT::i32)));
>   }
>
>
> _______________________________________________
> 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