[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