[LLVMbugs] [Bug 14356] New: ARM setExecutionDomain causes "Bad machine code: Using an undefined physical register"

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Nov 15 11:05:04 PST 2012


http://llvm.org/bugs/show_bug.cgi?id=14356

             Bug #: 14356
           Summary: ARM setExecutionDomain causes "Bad machine code: Using
                    an undefined physical register"
           Product: new-bugs
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: atrick at apple.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Created attachment 9549
  --> http://llvm.org/bugs/attachment.cgi?id=9549
read_arch.ll

The attached test case (read_arch.ll) is from CINT2000/175.vpr. Reproduce the
assert with:
llc read_arch.ll -verify-machineinstrs -march=thumb -mcpu=cortex-a9

The problem is that ARM's setExecuction marks the high half of the D register
as an implicit use (%S1<imp-use>). S1 is actually clobbered by the previous
call, so this is incorrect w.r.t. liveness. It looks to me like it should be
marked <undef> instead, but I may be missing something. I'd like the original
author to fix it.

In isolation this doesn't look like a terrible bug. However it can currently
lead to assertions inside the PostRAscheduler which runs after ExecutionDomain.
So even though the attached test requires -verify-machineinstr, it is a real
bug that can show up in default clang invocation.

Ideally, no late passes would rely on implicit operands for precise liveness,
but in the near term, this bug still needs to be fixed.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list