PATCH + test for PR17099.

Benjamin Kramer benny.kra at gmail.com
Mon Sep 16 04:30:37 PDT 2013


On 11.09.2013, at 09:56, Stepan Dyatkovskiy <stpworld at narod.ru> wrote:

> Hi!
> Sorry for latency.
> 
> OK, then. There are three patches, you guys just select proper one (if present) :-)

I'll take the patch with the helper. Your helper function declaration has funky indentation, can you run clang-format on it? Otherwise LGTM.

- Ben
> 
> -Stepan.
> 
> Benjamin Kramer wrote:
>> 
>> On 07.09.2013, at 09:53, Stepan Dyatkovskiy <stpworld at narod.ru> wrote:
>> 
>>> Fixed.
>>> -Stepan.
>> 
>> There is a very similar piece of code a few lines below, can this be merged? Also the bit width of the two types should always match, using getCastOpcode is a bit strange here. Maybe it's better to hoist the existing inttoptr/ptrtoint/bitcast code into a helper function and use that.
>> 
>> - Ben
>> 
>>> 
>>> Rafael EspĂ­ndola wrote:
>>>> You can use CHECK-LABEL for the function definitions.
>>>> 
>>>> Ctx is unused. With that Ty1 is unused.
>>>> 
>>>> On 6 September 2013 10:39, Stepan Dyatkovskiy <stpworld at narod.ru> wrote:
>>>>> Ah!! My failure!
>>>>> I have added FileCheck. Note, that I removed some extradata from CHECK
>>>>> directives, so for example I added
>>>>> 'tail call void @f0(i64'
>>>>> instead of tail 'call void @f0(i64 %2)'
>>>>> -Stepan.
>>>>> 
>>>>> 
>>>>> Rafael EspĂ­ndola wrote:
>>>>>> 
>>>>>> ; RUN: opt -S -mergefunc < %s
>>>>>> 
>>>>>> Please run FileCheck to show that you get the expected output.
>>>>>> 
>>>>>> On 6 September 2013 07:36, Stepan Dyatkovskiy <stpworld at narod.ru> wrote:
>>>>>>> 
>>>>>>> Hi Duncan,
>>>>>>> Thanks for hint!
>>>>>>> New patch is in attachment.
>>>>>>> 
>>>>>>> -Stepan.
>>>>>>> 
>>>>>>> 
>>>>>>> Duncan Sands wrote:
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Hi Stepan,
>>>>>>>> 
>>>>>>>>> Please find patch + regression test for MergeFunctions pass that fixes
>>>>>>>>> PR17099
>>>>>>>>> issue.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> --- lib/Transforms/IPO/MergeFunctions.cpp    (revision 189742)
>>>>>>>>> +++ lib/Transforms/IPO/MergeFunctions.cpp    (working copy)
>>>>>>>>> @@ -738,7 +738,15 @@
>>>>>>>>>     FunctionType *FFTy = F->getFunctionType();
>>>>>>>>>     for (Function::arg_iterator AI = NewG->arg_begin(), AE =
>>>>>>>>> NewG->arg_end();
>>>>>>>>>          AI != AE; ++AI) {
>>>>>>>>> -    Args.push_back(Builder.CreateBitCast(AI, FFTy->getParamType(i)));
>>>>>>>>> +    Type* Ty1 = AI->getType();
>>>>>>>>> +    Type* Ty2 = FFTy->getParamType(i);
>>>>>>>>> +    LLVMContext &Ctx = Ty1->getContext();
>>>>>>>>> +    if (isa<PointerType>(Ty1) && Ty2 == TD->getIntPtrType(Ctx))
>>>>>>>>> +      Args.push_back(Builder.CreatePtrToInt(AI, Ty2));
>>>>>>>>> +    else if (isa<PointerType>(Ty2) && Ty1 == TD->getIntPtrType(Ctx))
>>>>>>>>> +      Args.push_back(Builder.CreateIntToPtr(AI, Ty2));
>>>>>>>>> +    else
>>>>>>>>> +      Args.push_back(Builder.CreateBitCast(AI, Ty2));
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> you can use CastInst::getCastOpcode, which will produce BitCast,
>>>>>>>> IntToPtr or
>>>>>>>> PtrToInt as appropriate.
>>>>>>>> 
>>>>>>>> Ciao, Duncan.
>>>>>>>> 
>>>>>>>>>       ++i;
>>>>>>>>>     }
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> llvm-commits mailing list
>>>>>>>> llvm-commits at cs.uiuc.edu
>>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>> 
>>> 
>>> <pr17099-2013-09-07.patch>_______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
> 
> <pr17099-bitcast-opcode.patch><pr17099-ifs-no-helper.patch><pr17099-createCast-static-helper.patch>





More information about the llvm-commits mailing list