[LLVMdev] Helping the optimizer along (__assume)
Paul Biggar
paul.biggar at gmail.com
Thu Oct 23 05:12:04 PDT 2008
On Thu, Oct 23, 2008 at 8:23 AM, Duncan Sands <baldrick at free.fr> wrote:
>> > %cond = i1 ...
>> > br i1 %cond, label %always, label %never
>> > never:
>> > call void @llvm.abort()
>> > unreachable
>> >
>> > At codegen time @llvm.abort() can be lowered to
>> > nothing at all. I'm not saying that this is my
>> > favorite solution, but it is simple.
>>
>> How is this different than just branching to unreachable? Branching
>> to unreachable says that "this condition is true or else the program
>> has undefined behavior". This means that the condition must be true :)
>
> The difference is that simplifycfg will remove the branch
> to %never if %never only contains unreachable. The role
> of the intrinsic call is to fool simplifycfg into not
> doing this!
This certainly sounds like the simplest approach, even though it adds
an intrinsic. Is there general interest in adding this?
Thanks,
Paul
--
Paul Biggar
paul.biggar at gmail.com
More information about the llvm-dev
mailing list