[llvm-commits] [llvm] r72514 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
Bill Wendling
isanbard at gmail.com
Thu May 28 11:23:12 PDT 2009
In particular, it was during a cross compilation from i686 to powerpc:
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/obj-i686-powerpc/./gcc/xgcc
-B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/obj-i686-powerpc/./gcc/
-B/Developer/usr/llvm-gcc-4.2/powerpc-apple-darwin10/bin/
-B/Developer/usr/llvm-gcc-4.2/powerpc-apple-darwin10/lib/ -isystem
/Developer/usr/llvm-gcc-4.2/powerpc-apple-darwin10/include -isystem
/Developer/usr/llvm-gcc-4.2/powerpc-apple-darwin10/sys-include
-mmacosx-version-min=10.4 -O2 -O2 -g -O2 -DIN_GCC -W -Wall
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
-Wold-style-definition -isystem ./include -Wa,-force_cpusubtype_ALL
-pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED
-I. -I. -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/gcc
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/gcc/.
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/gcc/../include
-I./../intl -I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/gcc/../libcpp/include
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/gcc/../libdecnumber
-I../libdecnumber
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~dst/Developer/usr/local/include
-I/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/include
-DL_fixunsxfsi -c
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/gcc/libgcc2.c
-o libgcc/./_fixunsxfsi.o
-bw
On Thu, May 28, 2009 at 11:19 AM, Bill Wendling <isanbard at gmail.com> wrote:
> Eli,
>
> I had to revert this and r72516 (which depended upon this patch)
> because it was breaking the llvm-gcc bootstrap:
>
> Assertion failed: (!Tmp2.getNode() && "Can't legalize BR_CC with legal
> condition!"), function ExpandNode, file
> /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore.roots/llvmCore~obj/src/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp,
> line 2923.
> /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmgcc42.roots/llvmgcc42~obj/src/gcc/libgcc2.c:1727:
> 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.
>
> Please investigate.
>
> -bw
>
> On Wed, May 27, 2009 at 9:39 PM, Eli Friedman <eli.friedman at gmail.com> wrote:
>> Author: efriedma
>> Date: Wed May 27 23:39:57 2009
>> New Revision: 72514
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=72514&view=rev
>> Log:
>> Remove special cases for more opcodes.
>>
>> This is basically the end of this series of patches for LegalizeDAG; the
>> remaining special cases can't be removed without more infrastructure
>> work. There's a FIXME for each relevant opcode near the beginning of
>> SelectionDAGLegalize::LegalizeOp.
>>
>>
>> Modified:
>> llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=72514&r1=72513&r2=72514&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Wed May 27 23:39:57 2009
>> @@ -1038,39 +1038,6 @@
>> if (Node->getNumValues() == 2)
>> AddLegalizedOperand(SDValue(Node, 1), Result.getValue(1));
>> return Result.getValue(Op.getResNo());
>> - case ISD::BR_CC:
>> - Tmp1 = LegalizeOp(Node->getOperand(0)); // Legalize the chain.
>> - // Ensure that libcalls are emitted before a branch.
>> - Tmp1 = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Tmp1, LastCALLSEQ_END);
>> - Tmp1 = LegalizeOp(Tmp1);
>> - Tmp2 = Node->getOperand(2); // LHS
>> - Tmp3 = Node->getOperand(3); // RHS
>> - Tmp4 = Node->getOperand(1); // CC
>> -
>> - LegalizeSetCC(TLI.getSetCCResultType(Tmp2.getValueType()),
>> - Tmp2, Tmp3, Tmp4, dl);
>> - LastCALLSEQ_END = DAG.getEntryNode();
>> -
>> - // If we didn't get both a LHS and RHS back from LegalizeSetCC,
>> - // the LHS is a legal SETCC itself. In this case, we need to compare
>> - // the result against zero to select between true and false values.
>> - if (Tmp3.getNode() == 0) {
>> - Tmp3 = DAG.getConstant(0, Tmp2.getValueType());
>> - Tmp4 = DAG.getCondCode(ISD::SETNE);
>> - }
>> -
>> - Result = DAG.UpdateNodeOperands(Result, Tmp1, Tmp4, Tmp2, Tmp3,
>> - Node->getOperand(4));
>> -
>> - switch (TLI.getOperationAction(ISD::BR_CC, Tmp3.getValueType())) {
>> - default: assert(0 && "Unexpected action for BR_CC!");
>> - case TargetLowering::Legal: break;
>> - case TargetLowering::Custom:
>> - Tmp4 = TLI.LowerOperation(Result, DAG);
>> - if (Tmp4.getNode()) Result = Tmp4;
>> - break;
>> - }
>> - break;
>> case ISD::LOAD: {
>> LoadSDNode *LD = cast<LoadSDNode>(Node);
>> Tmp1 = LegalizeOp(LD->getChain()); // Legalize the chain.
>> @@ -1512,38 +1479,7 @@
>> }
>> break;
>> }
>> - case ISD::SELECT_CC: {
>> - Tmp1 = Node->getOperand(0); // LHS
>> - Tmp2 = Node->getOperand(1); // RHS
>> - Tmp3 = LegalizeOp(Node->getOperand(2)); // True
>> - Tmp4 = LegalizeOp(Node->getOperand(3)); // False
>> - SDValue CC = Node->getOperand(4);
>> -
>> - LegalizeSetCC(TLI.getSetCCResultType(Tmp1.getValueType()),
>> - Tmp1, Tmp2, CC, dl);
>> -
>> - // If we didn't get both a LHS and RHS back from LegalizeSetCC,
>> - // the LHS is a legal SETCC itself. In this case, we need to compare
>> - // the result against zero to select between true and false values.
>> - if (Tmp2.getNode() == 0) {
>> - Tmp2 = DAG.getConstant(0, Tmp1.getValueType());
>> - CC = DAG.getCondCode(ISD::SETNE);
>> - }
>> - Result = DAG.UpdateNodeOperands(Result, Tmp1, Tmp2, Tmp3, Tmp4, CC);
>> -
>> - // Everything is legal, see if we should expand this op or something.
>> - switch (TLI.getOperationAction(ISD::SELECT_CC, Tmp3.getValueType())) {
>> - default: assert(0 && "This action is not supported yet!");
>> - case TargetLowering::Legal: break;
>> - case TargetLowering::Custom:
>> - Tmp1 = TLI.LowerOperation(Result, DAG);
>> - if (Tmp1.getNode()) Result = Tmp1;
>> - break;
>> - }
>> - break;
>> - }
>> }
>> -
>> assert(Result.getValueType() == Op.getValueType() &&
>> "Bad legalization!");
>>
>> @@ -2355,7 +2291,7 @@
>> void SelectionDAGLegalize::ExpandNode(SDNode *Node,
>> SmallVectorImpl<SDValue> &Results) {
>> DebugLoc dl = Node->getDebugLoc();
>> - SDValue Tmp1, Tmp2, Tmp3;
>> + SDValue Tmp1, Tmp2, Tmp3, Tmp4;
>> switch (Node->getOpcode()) {
>> case ISD::CTPOP:
>> case ISD::CTLZ:
>> @@ -2977,6 +2913,47 @@
>> Results.push_back(Tmp1);
>> break;
>> }
>> + case ISD::SELECT_CC: {
>> + Tmp1 = Node->getOperand(0); // LHS
>> + Tmp2 = Node->getOperand(1); // RHS
>> + Tmp3 = Node->getOperand(2); // True
>> + Tmp4 = Node->getOperand(3); // False
>> + SDValue CC = Node->getOperand(4);
>> +
>> + LegalizeSetCC(TLI.getSetCCResultType(Tmp1.getValueType()),
>> + Tmp1, Tmp2, CC, dl);
>> +
>> + assert(!Tmp2.getNode() && "Can't legalize SELECT_CC with legal condition!");
>> + Tmp2 = DAG.getConstant(0, Tmp1.getValueType());
>> + CC = DAG.getCondCode(ISD::SETNE);
>> + Tmp1 = DAG.getNode(ISD::SELECT_CC, dl, Node->getValueType(0), Tmp1, Tmp2,
>> + Tmp3, Tmp4, CC);
>> + Results.push_back(Tmp1);
>> + break;
>> + }
>> + case ISD::BR_CC: {
>> + Tmp1 = Node->getOperand(0); // Chain
>> + Tmp2 = Node->getOperand(2); // LHS
>> + Tmp3 = Node->getOperand(3); // RHS
>> + Tmp4 = Node->getOperand(1); // CC
>> +
>> + LegalizeSetCC(TLI.getSetCCResultType(Tmp2.getValueType()),
>> + Tmp2, Tmp3, Tmp4, dl);
>> + LastCALLSEQ_END = DAG.getEntryNode();
>> +
>> + // If we didn't get both a LHS and RHS back from LegalizeSetCC,
>> + // the LHS is a legal SETCC itself. In this case, we need to compare
>> + // the result against zero to select between true and false values.
>> + if (Tmp3.getNode() == 0) {
>> + Tmp3 = DAG.getConstant(0, Tmp2.getValueType());
>> + Tmp4 = DAG.getCondCode(ISD::SETNE);
>> + }
>> +
>> + Tmp1 = DAG.getNode(ISD::BR_CC, dl, Node->getValueType(0), Tmp1, Tmp4, Tmp2,
>> + Tmp3, Node->getOperand(4));
>> + Results.push_back(Tmp1);
>> + break;
>> + }
>> case ISD::GLOBAL_OFFSET_TABLE:
>> case ISD::GlobalAddress:
>> case ISD::GlobalTLSAddress:
>>
>>
>> _______________________________________________
>> 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