[llvm-commits] [PATCH][SOPT] Fix assertion in Reassociate

Evan Cheng evan.cheng at apple.com
Tue Nov 6 16:23:22 PST 2012


On Nov 6, 2012, at 11:43 AM, Shuxin Yang <shuxin.llvm at gmail.com> wrote:

> Hi, Duncan:
> 
>    Thank you for looking into this problem.
> 
>    I don't know for sure if the testing case I'm working on is proprietary or not.

Sorry, we cannot share the original test case.

Evan

> I try to come up a contrived example, see bellow.  This contrived example triggers
> exactly the same assertion, but the assertion is triggered at different stage. (See following
> code for the concept of stage).
> 
> contrived example
> =============
> cat a.ll
> define i32 @foo(i32 %arg, i32 %arg1, i32 %arg2) nounwind {
> mylab:
>  %tmp1 = mul i32 %arg1, 2
>  %tmp2 = mul i32 %tmp1, 3
>  %tmp3 = mul i32 %arg2, 2
> ; dead code
>  %tmp4 = add i32 %tmp1, 1
>  %ret = add i32 %tmp2, %tmp3
>  ret i32 %ret
> }
> 
> reproduced by "opt -S -reassociate a.ll
> 
>  Unfortunately, my patch does not catch this contrived example either, because it only tries to catch this situation
> in stage 2. see bellow:
> 
> The "stages"
> =======================
> bool Reassociate::runOnFunction() {
>   for each basic block bb {
>       // stage 1: go through all instruction in given bb in forward order
>        for each instruction i
>            if i is dead
>                erase i
>            else
>                reassociate i
> 
>         // stage 2:
>         while (worklist != empty) {
>              i = worklist.pop_back_val;
>              opt or delete i;
>         }
>  }
> 
> I guess we should not delete Instruction during the process of reassociation.
> 
> Thanks
> Shuxin
> 
> 
> On 11/6/12 1:20 AM, Duncan Sands wrote:
>> Hi Shuxin,
>> 
>>>  The testing case (reduced by bugpoint) for this probelm is not inclued in the
>>> patch, as it
>>> is too big.
>> 
>> can you please send it to the list so that people can analyse it, even if it
>> won't be part of the final patch.
>> 
>> Thanks, Duncan.
>> _______________________________________________
>> 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