This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/47246] New: [4.6 Regression] Invalid immediate offset for Thumb VFP store
- From: "ibolton at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 10 Jan 2011 16:15:04 +0000
- Subject: [Bug rtl-optimization/47246] New: [4.6 Regression] Invalid immediate offset for Thumb VFP store
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47246
Summary: [4.6 Regression] Invalid immediate offset for Thumb
VFP store
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: ibolton@gcc.gnu.org
Host: arm-linux-gnueabi
Target: arm-linux-gnueabi
Build: arm-linux-gnueabi
Created attachment 22939
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22939
This is the preprocessed source that shows the issue
The following patch, which went into trunk as revision 168045, has made it
possible for gcc to generate invalid offsets for some VFP stores:
http://gcc.gnu.org/ml/gcc-patches/2010-12/msg01349.html
The range -1024 to +1024 is ok for 's' co-processor registers, but not for
generic 'r' registers.
The attached preprocessed source can be made to show the issue by compiling as
follows:
gcc -O3 -mthumb mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv3-d16 besttry.i
--save-temps
The error caused is this:
/tmp/ccxviNhV.s: Assembler messages:
/tmp/ccxviNhV.s:37: Error: offset out of range
I have attached the produced besttry.s.
In the short-term, I suggest that we limit the negative offset, to be able to
cover the case where VFP store ends up using general registers. I do not know
how we could allow a larger negative offset for the 's' registers, when it is
not known until later what type of register will get allocated.