[llvm-bugs] [Bug 27612] New: Incorrect code when hoist spill to a BB with landingpad successor

via llvm-bugs llvm-bugs at lists.llvm.org
Mon May 2 22:35:03 PDT 2016


            Bug ID: 27612
           Summary: Incorrect code when hoist spill to a BB with
                    landingpad successor
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Register Allocator
          Assignee: unassignedbugs at nondot.org
          Reporter: wmi at google.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

Created attachment 16296
  --> https://llvm.org/bugs/attachment.cgi?id=16296&action=edit
testcase 1.cc

We had an internal test SEGV after r266162. A testcase 1.cc was extracted and

~/workarea/llvm-r266162/dbuild/bin/clang++ -std=c++11 -fPIC
-fno-sanitize-recover=all -O1 -S 1.cc

The following code was problematic:

        xorl    %edi, %edi
        callq   _ZlsIiEv1CIT_Ej at PLT
        movq    %r12, 24(%rbx)          # 8-byte Spill
# BB#5:

_ZlsIiEv1CIT_Ej at PLT was a func which may throw. Before hoisting, Spill (movq   
%r12, 24(%rbx)) existed in both fall through code and landingpad of callq  
_ZlsIiEv1CIT_Ej at PLT. It is incorrect to insert Spill after the call during

When we hoist spill to a BB with landingpad successor, if the live interval of
the spill reg live into the landingpad successor, the spill should be inserted
before the last split point, i.e., before the call that may throw.

Will send out a patch for review soon.

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/20160503/820de435/attachment.html>

More information about the llvm-bugs mailing list