[llvm-dev] Inst->replaceAllUsesWith and uses in ConstantExpr

Craig Topper via llvm-dev llvm-dev at lists.llvm.org
Wed Aug 16 17:12:38 PDT 2017


ConstantExprs are immutable, they can't be changed once they are created.
And a ConstantExpr can reference other ConstantExprs. So replacing all uses
of a Value in a ConstantExpr would require creating a new immutable object
for each ConstantExpr that references the one you're changing. And that
would continue rippling outward.

~Craig

On Wed, Aug 16, 2017 at 5:01 PM, (IIIT) Siddharth Bhat via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Whoops, sorry, I meant "value->replaceAllUsesWith".
>
> Should I create a new post with an updated title?
>
> Thanks
> Siddharth
>
> On Thu 17 Aug, 2017, 01:05 Tim Northover <t.p.northover at gmail.com> wrote:
>
>> On 16 August 2017 at 15:39, (IIIT) Siddharth Bhat via llvm-dev
>> <llvm-dev at lists.llvm.org> wrote:
>> > From what I have observed, using `Inst->replaceAllUsesWith` does not
>> replace
>> > uses of the `Inst` in `ConstantExpr`s. Is there some way to have a
>> universal
>> > replaceAllUsesWith?
>>
>> Where are you seeing instructions used in ConstantExprs? That sounds
>> really dodgy to me. Instructions are horribly non-Constant so I'd have
>> thought it would be banned (even for technically plausible things like
>> "and(i32 %inst, 0)").
>>
>> Cheers.
>>
>> Tim.
>>
> --
> Sending this from my phone, please excuse any typos!
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170816/11b17b73/attachment-0001.html>


More information about the llvm-dev mailing list