This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH, ARM] Fix ABI conformance regression


This patch fixes a regression that we've discovered in GCC's conformance
to the ARM ABI for the hard-float calling convention.  The problem
occurred because of changes in the mid-end in the way we mark some
structures as having a machine mode now rather than BLKmode.  We missed
this happening because the ABI conformance tests do not cover any vector
operands.

To fix this the code to determine the register class required for
passing an argument now only looks at the mode if there is no tree type
information available.

Ramana kindly wrote some tests to help verify this and I'm checking them
in along with the patch.

Although I do not believe any of our release branches contain this
regression, it is possible that if some groups have agressively
back-ported some trunk patches to their own developments then they might
have silently introduced this regression there too.  As a result I
propose to back-port the testsuite only to the release branches that
support the hard-float ABI calling standard as soon as the 4.6 branch
re-opens.

R.

2012-02-28  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (aapcs_vfp_is_call_or_return_candidate): Only use the machine
	mode if there is no type information available.

2012-02-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	* gcc.target/arm/vfp1.c (dg_do run): Run on all eabi variants.
	* gcc.target/arm/vfp2.c: Likewise.
	* gcc.target/arm/vfp3.c: Likewise.
	* gcc.target/arm/vfp4.c: Likewise.
	* gcc.target/arm/vfp5.c: Likewise.
	* gcc.target/arm/vfp6.c: Likewise.
	* gcc.target/arm/vfp7.c: Likewise.
	* gcc.target/arm/vfp8.c: Likewise.
	* gcc.target/arm/vfp9.c: Likewise.
	* gcc.target/arm/vfp10.c: Likewise.
	* gcc.target/arm/vfp11.c: Likewise.
	* gcc.target/arm/vfp12.c: Likewise.
	* gcc.target/arm/vfp13.c: Likewise.
	* gcc.target/arm/vfp14.c: Likewise.
	* gcc.target/arm/vfp15.c: Likewise.
	* gcc.target/arm/vfp16.c: Likewise.
	* gcc.target/arm/vfp17.c: Likewise.
	* gcc.target/arm/neon-constants.h: New file.
	* gcc.target/arm/neon-vect1.c: New test.
	* gcc.target/arm/neon-vect2.c: New test.
	* gcc.target/arm/neon-vect3.c: New test.
	* gcc.target/arm/neon-vect4.c: New test.
	* gcc.target/arm/neon-vect5.c: New test.
	* gcc.target/arm/neon-vect6.c: New test.
	* gcc.target/arm/neon-vect7.c: New test.
	* gcc.target/arm/neon-vect8.c: New test.

Attachment: abi.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]