[llvm-commits] [llvm] r55292 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/fold-call-2.ll
Bill Wendling
isanbard at gmail.com
Sun Aug 24 22:33:05 PDT 2008
Here you go.
-bw
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bad.bc
Type: application/octet-stream
Size: 12752 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20080824/09522c39/attachment.obj>
-------------- next part --------------
On Aug 24, 2008, at 9:04 PM, Evan Cheng wrote:
> Strangness. I was able to do a Apple style build with the patch. Any
> chance you can get me a bc file?
>
> Evan
>
> On Aug 24, 2008, at 2:45 PM, Bill Wendling wrote:
>
>> Evan,
>>
>> I think that this patch was causing a bootstrap failure:
>>
>> /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/
>> xgcc
>> -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./
>> gcc/ -
>> B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/
>> i386-
>> apple-darwin9.4.0/bin/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/
>> build/llvm-gcc.install/i386-apple-darwin9.4.0/lib/ -isystem /Volumes/
>> Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-
>> darwin9.4.0/include -isystem /Volumes/Sandbox/Buildbot/llvm/full-
>> llvm/
>> build/llvm-gcc.install/i386-apple-darwin9.4.0/sys-include -c -
>> DHAVE_CONFIG_H -O2 -g -O2 -m64 -I. -I../../../../llvm-gcc.src/
>> libiberty/../include -W -Wall -pedantic -Wwrite-strings -Wstrict-
>> prototypes -Wc++-compat ../../../../llvm-gcc.src/libiberty/make-temp-
>> file.c -o make-temp-file.o
>> Assertion failed: (Node2Index[SU->NodeNum] > Node2Index[I->Dep-
>>> NodeNum] && "Wrong topological sorting"), function
>> InitDAGTopologicalSorting, file /Volumes/Sandbox/Buildbot/llvm/full-
>> llvm/build/llvm.src/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp,
>> line 508.
>> ../../../../llvm-gcc.src/libiberty/hashtab.c:955: 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.
>> make[4]: *** [hashtab.o] Error 1
>> make[4]: *** Waiting for unfinished jobs....
>> make[3]: *** [multi-do] Error 1
>> make[2]: *** [all] Error 2
>> make[1]: *** [all-target-libiberty] Error 2
>> make: *** [all] Error 2
>>
>> I temporarily reverted it.
>>
>> -bw
>>
>> On Aug 24, 2008, at 12:19 PM, Evan Cheng wrote:
>>
>>> Author: evancheng
>>> Date: Sun Aug 24 14:19:55 2008
>>> New Revision: 55292
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=55292&view=rev
>>> Log:
>>> Move callseq_start above the call address load to allow load to be
>>> folded into the call node.
>>>
>>> Added:
>>> llvm/trunk/test/CodeGen/X86/fold-call-2.ll
>>> Modified:
>>> llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>>>
>>> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=55292&r1=55291&r2=55292&view=diff
>>>
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> ====================================================================
>>> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
>>> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Sun Aug 24
>>> 14:19:55 2008
>>> @@ -1457,12 +1457,12 @@
>>>
>>> SDValue X86TargetLowering::LowerCALL(SDValue Op, SelectionDAG
>>> &DAG) {
>>> MachineFunction &MF = DAG.getMachineFunction();
>>> - SDValue Chain = Op.getOperand(0);
>>> + SDValue Chain = Op.getOperand(0);
>>> unsigned CC = cast<ConstantSDNode>(Op.getOperand(1))-
>>>> getValue();
>>> bool isVarArg = cast<ConstantSDNode>(Op.getOperand(2))-
>>>> getValue() != 0;
>>> bool IsTailCall = cast<ConstantSDNode>(Op.getOperand(3))-
>>>> getValue() != 0
>>> && CC == CallingConv::Fast &&
>>> PerformTailCallOpt;
>>> - SDValue Callee = Op.getOperand(4);
>>> + SDValue Callee = Op.getOperand(4);
>>> bool Is64Bit = Subtarget->is64Bit();
>>> bool IsStructRet = CallIsStructReturn(Op);
>>>
>>> @@ -1499,6 +1499,11 @@
>>> MF.getInfo<X86MachineFunctionInfo>()-
>>>> setTCReturnAddrDelta(FPDiff);
>>> }
>>>
>>> + // If the address is a load, i.e. indirect function call, move
>>> callseq_start
>>> + // above the load. This makes it possible for the load to fold
>>> into the call.
>>> + if (Callee.Val == Chain.Val && ISD::isNormalLoad(Callee.Val) &&
>>> + Chain.hasOneUse() && Callee.hasOneUse())
>>> + Chain = Chain.getOperand(0);
>>> Chain = DAG.getCALLSEQ_START(Chain,
>>> DAG.getIntPtrConstant(NumBytes));
>>>
>>> SDValue RetAddrFrIdx;
>>>
>>> Added: llvm/trunk/test/CodeGen/X86/fold-call-2.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fold-call-2.ll?rev=55292&view=auto
>>>
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> ====================================================================
>>> --- llvm/trunk/test/CodeGen/X86/fold-call-2.ll (added)
>>> +++ llvm/trunk/test/CodeGen/X86/fold-call-2.ll Sun Aug 24 14:19:55
>>> 2008
>>> @@ -0,0 +1,10 @@
>>> +; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin | grep mov |
>>> count 1
>>> +
>>> + at f = external global void ()* ; <void ()**> [#uses=1]
>>> +
>>> +define i32 @main() nounwind {
>>> +entry:
>>> + load void ()** @f, align 8 ; <void ()*>:0 [#uses=1]
>>> + tail call void %0( ) nounwind
>>> + ret i32 0
>>> +}
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> 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