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]

fix for IA-64 enable-checking glibc ICE


I wrote this in November, but never got around to checking it in.  I'm
not sure if I can reproduce the problem again, but it is fairly obvious.
I just did an x86-linux bootstrap and make check for all default
languages which succeeded with no regressions.  The ia64-linux bootstrap
and make check was done back in November.

I have checked this in now on mainline.

Here is what I originally wrote in November...

The glibc file iconvdata/iso-2022-cn-ext.c triggers an ICE when compiled
for an IA-64 target with -O2 using a gcc-4.2 compiler configured with
--enable-checking.  The failure is:
../iconv/skeleton.c:801: internal compiler error: RTL flag check:
INSN_DELETED_P used with unexpected rtx code 'plus' in
output_constant_pool_1, at varasm.c:3392
	
The code fails when we take the fallthrough at the bottom on CONST.  Tmp
is now pointing at a LABEL_REF, but the LABEL_REF code accidentally uses
x instead which is a CONST.  Since this code never sets x, and tmp is
not used after this code, the sensible thing to do is to use tmp
everywhere instead of x.
	
This has been broken since gcc-3.0 which is when an if statement got
rewritten into the switch.  Looking at this code confirms that use of
tmp everywhere instead of x was the original intent.
	
I don't have a testcase that fails with gcc-4.3, but the same problem is
still clearly there.
	
This patch was tested with an ia64-linux bootstrap and make check.
There were no regressions.

Since this isn't a regression, I'm not planning to add the patch to the
gcc-4.2 branch unless someone recommends otherwise.

Jim

Attachment: patch.ia64.glibc
Description: Text document


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