[prev in list] [next in list] [prev in thread] [next in thread]
List: llvm-bugs
Subject: [LLVMbugs] [Bug 4657] New: register scavenger asserts with subreg
From: bugzilla-daemon () cs ! uiuc ! edu
Date: 2009-07-31 0:51:29
Message-ID: bug-4657-206 () http ! llvm ! org/bugs/
[Download RAW message or body]
http://llvm.org/bugs/show_bug.cgi?id=4657
Summary: register scavenger asserts with subreg lowering
Product: libraries
Version: trunk
Platform: Macintosh
OS/Version: MacOS X
Status: NEW
Severity: normal
Priority: P2
Component: Register Allocator
AssignedTo: unassignedbugs@nondot.org
ReportedBy: bob.wilson@apple.com
CC: llvmbugs@cs.uiuc.edu
Created an attachment (id=3262)
--> (http://llvm.org/bugs/attachment.cgi?id=3262)
testcase
The attached file causes the scavenger to assert when compiled with "llc
-march=arm -mattr=+neon". Here is what I think is happening. (I've actually
been looking at a slightly different case that doesn't occur without some of my
local changes, but I think it is the same problem.) A Neon quad register is
defined by a pair of insert_subregs. The subreg accesses are lowered into
copies that assign the underlying Neon double registers. Now you've got a quad
register that is used but never (directly) defined. Or, at least that seems to
be what the scavenger is thinking.
For example, in the following Q1 is defined:
%D0<def> = FMDRR %R2<kill>, %R3<kill>, 14, %reg0
%D1<def> = FMDRR %R0<kill>, %R1<kill>, 14, %reg0
%Q1<def> = INSERT_SUBREG %Q1<undef>, %D1<kill>, 5
%Q1<def> = INSERT_SUBREG %Q1, %D0<kill>, 6
%R0<def> = ADDri <fi#0>, 0, 14, %reg0, %reg0
VSTRQ %Q1<kill>, %R0, Mem:ST(16,16) [v_addr + 0]
but then the INSERT_SUBREGs are lowered:
********** LOWERING SUBREG INSTRS **********
********** Function: scale
subreg: CONVERTING: %Q1<def> = INSERT_SUBREG %Q1<undef>, %D1<kill>, 5
subreg: %D2<def> = FCPYD %D1, 14, %reg0
subreg: CONVERTING: %Q1<def> = INSERT_SUBREG %Q1, %D0<kill>, 6subreg: %D3<def>
= FCPYD %D0, 14, %reg0
and the scavenger asserts:
Assertion failed: (isUsed(Reg) && "Using an undefined register!"), function
forward, file
/Users/bwilson/local/llvm/llvm/lib/CodeGen/RegisterScavenging.cpp, line 221.
--
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.
_______________________________________________
LLVMbugs mailing list
LLVMbugs@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic