[llvm-commits] [llvm] r52377 - in /llvm/trunk/lib/Target/X86: X86ISelDAGToDAG.cpp X86ISelLowering.cpp

Julien Lerouge jlerouge at apple.com
Tue Jun 17 15:38:01 PDT 2008


Hello Evan,

This patch seems to break llvm-gcc. Using the build_gcc script (builds
the "Apple way"), I get a native i686 compiler that seems to have
problem with -g option:

t.c:
int main ()
{
  int i = 0;
  return i;
}

$ ./gcc -g -o t t.c
Cannot yet select llvm.dbg.declare: 0x41b0bee0: ch = declare 0x41b0baf0, 0x41b0be10, 0x41b0c440t.c:5: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.

I guess it has to do with the change in X86ISelLowering.cpp below ?

Thanks,
Julien

On Tue, Jun 17, 2008 at 02:01:23AM +0000, Evan Cheng wrote:
> Author: evancheng
> Date: Mon Jun 16 21:01:22 2008
> New Revision: 52377
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=52377&view=rev
> Log:
> Rather than avoiding to wrap ISD::DECLARE GV operand in X86ISD::Wrapper, simply handle it at dagisel time with x86 specific isel code.
> 
> Modified:
>     llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp
>     llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
> 
> Modified: llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp?rev=52377&r1=52376&r2=52377&view=diff
> 
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp Mon Jun 16 21:01:22 2008
> @@ -1578,6 +1578,28 @@
>        return ResNode;
>        break;
>      }
> +
> +    case ISD::DECLARE: {
> +      // Handle DECLARE nodes here because the second operand may have been
> +      // wrapped in X86ISD::Wrapper.
> +      SDOperand Chain = Node->getOperand(0);
> +      SDOperand N1 = Node->getOperand(1);
> +      SDOperand N2 = Node->getOperand(2);
> +      if (isa<FrameIndexSDNode>(N1) &&
> +          N2.getOpcode() == X86ISD::Wrapper &&
> +          isa<GlobalAddressSDNode>(N2.getOperand(0))) {
> +        int FI = cast<FrameIndexSDNode>(N1)->getIndex();
> +        GlobalValue *GV =
> +          cast<GlobalAddressSDNode>(N2.getOperand(0))->getGlobal();
> +        SDOperand Tmp1 = CurDAG->getTargetFrameIndex(FI, TLI.getPointerTy());
> +        SDOperand Tmp2 = CurDAG->getTargetGlobalAddress(GV, TLI.getPointerTy());
> +        AddToISelQueue(Chain);
> +        SDOperand Ops[] = { Tmp1, Tmp2, Chain };
> +        return CurDAG->getTargetNode(TargetInstrInfo::DECLARE,
> +                                     MVT::Other, Ops, 3);
> +      }
> +      break;
> +    }
>    }
>  
>    SDNode *ResNode = SelectCode(N);
> 
> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=52377&r1=52376&r2=52377&view=diff
> 
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Mon Jun 16 21:01:22 2008
> @@ -4173,9 +4173,6 @@
>  X86TargetLowering::LowerGlobalAddress(SDOperand Op, SelectionDAG &DAG) {
>    GlobalValue *GV = cast<GlobalAddressSDNode>(Op)->getGlobal();
>    SDOperand Result = DAG.getTargetGlobalAddress(GV, getPointerTy());
> -  // If it's a debug information descriptor, don't mess with it.
> -  if (DAG.isVerifiedDebugInfoDesc(Op))
> -    return Result;
>    Result = DAG.getNode(X86ISD::Wrapper, getPointerTy(), Result);
>    // With PIC, the address is actually $g + Offset.
>    if (getTargetMachine().getRelocationModel() == Reloc::PIC_ &&
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-- 
Julien Lerouge
PGP Key Id: 0xB1964A62
PGP Fingerprint: 392D 4BAD DB8B CE7F 4E5F FA3C 62DB 4AA7 B196 4A62
PGP Public Key from: keyserver.pgp.com



More information about the llvm-commits mailing list