[llvm-bugs] [Bug 43061] New: An empty exit block produced by LoopSimplify increases spilling

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Aug 20 08:34:24 PDT 2019


            Bug ID: 43061
           Summary: An empty exit block produced by LoopSimplify increases
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Register Allocator
          Assignee: unassignedbugs at nondot.org
          Reporter: paulsson at linux.vnet.ibm.com
                CC: llvm-bugs at lists.llvm.org, quentin.colombet at gmail.com

Created attachment 22400
  --> https://bugs.llvm.org/attachment.cgi?id=22400&action=edit
llc input

I was experimenting with a pre-isl loop pass and found that by running the
LoopSimplify pass I saw generally more spilling. This happened also when I
turned off my optimization, so that *only* canonicalization of loop was the

I am not sure this is something worth looking into, but it looks like a
potential area improvement since an empty block after a loop (exit block) by
itself does not change the register allocation problem.

llc -mcpu=z14 ./tc.mir -o out.0.s -start-before=greedy
llc -mcpu=z14 ./tc.emptyexitblock.mir -o out.1.s -start-before=greedy

out.1.s has one more spilled interval, around the loop. The only (real)
difference between the two mir files is:

<   bb66:                                             ; preds = %bb51, %bb19    
>   bb66.loopexit:                                    ; preds = %bb51
>     br label %bb66
>   bb66:                                             ; preds = %bb66.loopexit,

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190820/db63cfc1/attachment-0001.html>

More information about the llvm-bugs mailing list