[llvm-dev] LLVM 3.9 RC2's SCCP pass removing calls to external functions?!

Alexandre Isoard via llvm-dev llvm-dev at lists.llvm.org
Wed Aug 24 00:48:06 PDT 2016


I am probably stating the obvious, but if the function is side-effect free
(onlyReadsMemory) it is valid to remove it.

But I am guessing that does not belong to this pass.

On Wed, Aug 24, 2016 at 8:38 AM, Sanjoy Das via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Btw, looks like the bug is in runSCCP in
>
>     for (BasicBlock::iterator BI = BB.begin(), E = BB.end(); BI != E;) {
>       Instruction *Inst = &*BI++;
>       if (Inst->getType()->isVoidTy() || isa<TerminatorInst>(Inst))
>         continue;
>
>       if (tryToReplaceInstWithConstant(Solver, Inst,
>                                        true /* shouldEraseFromParent */)) {
>         // Hey, we just changed something!
>         MadeChanges = true;
>         ++NumInstRemoved;
>       }
>
> It should not be passing in true for shouldEraseFromParent.  I think
> the right fix here is to not have the shouldEraseFromParent parameter
> at all, but in tryToReplaceInstWithConstant to do:
>
>   // replace Inst with constant
>   llvm::RecursivelyDeleteTriviallyDeadInstructions(Inst, TLI);
>
> Let me know if you want to take a crack at this, otherwise I'll get to
> it this week.
>
> -- Sanjoy
>
>
> On Wed, Aug 24, 2016 at 12:12 AM, Sanjoy Das
> <sanjoy at playingwithpointers.com> wrote:
> > Hi Félix,
> >
> > Sanjoy Das wrote:
> >> Félix Cloutier via llvm-dev wrote:
> >>  > Assuming that this is a bug, what are the next steps?
> >>
> >> Looks like you already have a very small test case -- have you tried
> >> sticking it in a debugger to see why SCCP thinks removing the call is
> >> okay?
> >>
> >> Alternatively, file a bug at llvm.org/bugs and someone will get to it.
> >
> > The third thing you can do is run a bisection to find the problematic
> > commit, since you said this was a regression.
> >
> > -- Sanjoy
>
>
>
> --
> Sanjoy Das
> http://playingwithpointers.com
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>



-- 
*Alexandre Isoard*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160824/3458d415/attachment.html>


More information about the llvm-dev mailing list