[LLVMdev] Missed optimization with indirectbr terminator

Carlo Alberto Ferraris cafxx at strayorange.com
Thu Jul 7 02:05:23 PDT 2011


Consider this IR fragment produced after -O3:
> %7:
> %8 = phi i8* [ blockaddress(@0, %19), %19 ], [ %12, %11 ]
> %9 = phi i32 [ %20, %19 ], [ 0, %11 ]
> indirectbr i8* %8, [label %4, label %19]
>
> %19:
> %20 = add nsw i32 %9, 1
> %21 = icmp eq i32 %9, 9999
> br i1 %21, label %16, label %7
the br in %19 should be optimized to branch directly to itself rather 
than going back to %7 (note that the arg %8 to the indirectbr will 
always be the address of %19 when coming from %19).
Is this a known missed optimization?

-- 
Carlo Alberto Ferraris <cafxx at strayorange.com 
<mailto:cafxx at strayorange.com>>
website/blog <http://cafxx.strayorange.com> - +39 333 7643 235
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110707/79866d0b/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cafxx.vcf
Type: text/x-vcard
Size: 233 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110707/79866d0b/attachment.vcf>


More information about the llvm-dev mailing list