[LLVMdev] [PATH] Add sub.ovf/mul.ovf intrinsics
Bill Wendling
isanbard at gmail.com
Tue Dec 9 22:26:05 PST 2008
It's the DAG combiner that's barfing. I'll look into it.
-bw
On Dec 9, 2008, at 3:59 PM, Zoltan Varga wrote:
> Hi,
>
> The add.with.overflow instrinsics don't seem to work with constant
> arguments, i.e.
> changing the call in add-with-overflow.ll to:
> %t = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 0, i32 0)
>
> causes the following exception when running the codegen tests:
>
> llc: DAGCombiner.cpp:646:
> void<unnamed>::DAGCombiner::Run(llvm::CombineLevel): Assertion
> `N->getValueType(0) == RV.getValueType() && N->getNumValues() == 1 &&
> "Type mismatch"' failed.
> 0 llc 0x00000000010601ef
> 1 llc 0x00000000010604ec
> 2 libc.so.6 0x00007f58a754df60
> 3 libc.so.6 0x00007f58a754ded5 gsignal + 53
> 4 libc.so.6 0x00007f58a754f3f3 abort + 387
> 5 libc.so.6 0x00007f58a7546dc9 __assert_fail + 233
> 6 llc 0x0000000000cd0444
> 7 llc 0x0000000000cd0575
> llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AliasAnalysis&,
> bool) + 55
> 8 llc 0x0000000000d5075a
> llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 2176
> 9 llc 0x0000000000d52a6e
> llvm::SelectionDAGISel::SelectBasicBlock(llvm::BasicBlock*,
> llvm::ilist_iterator<llvm::Instruction>,
> llvm::ilist_iterator<llvm::Instruction>) + 642
> 10 llc 0x0000000000d533e5
> llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function&,
> llvm::MachineFunction&, llvm::MachineModuleInfo*,
> llvm::TargetInstrInfo const&) + 2175
> 11 llc 0x0000000000d540f6
> llvm::SelectionDAGISel::runOnFunction(llvm::Function&) + 778
> 12 llc 0x0000000000fedd1d
> llvm::FPPassManager::runOnFunction(llvm::Function&) + 239
> 13 llc 0x0000000000fee860
> llvm::FunctionPassManagerImpl::run(llvm::Function&) + 116
> 14 llc 0x0000000000fee9be
> llvm::FunctionPassManager::run(llvm::Function&) + 128
> 15 llc 0x0000000000822a95 main + 2234
>
> Zoltan
>
> On Tue, Dec 9, 2008 at 11:08 PM, Bill Wendling <isanbard at gmail.com>
> wrote:
>> Applied. Thanks, Zoltan!
>>
>> -bw
>>
>> On Tue, Dec 9, 2008 at 1:12 PM, Zoltan Varga <vargaz at gmail.com>
>> wrote:
>>> Hi,
>>>
>>> Attached is the final version of the patch, adding the requested
>>> FIXME. If this is ok, can
>>> somebody check it in ?
>>>
>>> thanks
>>>
>>> Zoltan
>>>
>>> On Tue, Dec 9, 2008 at 9:58 PM, Bill Wendling <isanbard at gmail.com>
>>> wrote:
>>>> On Tue, Dec 9, 2008 at 6:11 AM, Zoltan Varga <vargaz at gmail.com>
>>>> wrote:
>>>>> Hi,
>>>>>
>>>>> Here is the next iteration of the patch. The only comment not
>>>>> addressed is this one:
>>>>>
>>>> Thanks! It's looking good.
>>>>
>>>>>> It would be better to implement a target-independent check for
>>>>>> overflow for the "Legal" case (like how SADDO does). Hacker's >
>>>>>> Delight
>>>>>> has some hints on how to do this. It's not easy for the signed
>>>>>> case,
>>>>>> but is do-able.
>>>>>
>>>>> It can be lowered to a division + a branch, so it would be
>>>>> inefficient, plus it would
>>>>> be a lot of work to implement it correctly (for me at least).
>>>>>
>>>> Okay. It would be tricky. Please put a "FIXME" in there indicating
>>>> that it would be nice to have at some point. It's okay to submit
>>>> this.
>>>>
>>>> -bw
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list