Unrepresentable subregs and hard_regno_nregs

Andreas Schwab schwab@suse.de
Thu Dec 21 10:51:00 GMT 2006


"Joseph S. Myers" <joseph@codesourcery.com> writes:

> 2006-12-19  Joseph Myers  <joseph@codesourcery.com>
>
> 	* rtlanal.c (struct subreg_info, subreg_get_info, subreg_nregs):
> 	New.
> 	(subreg_regno_offset, subreg_offset_representable_p): Change to
> 	wrappers about subreg_get_info.
> 	(refers_to_regno_p, reg_overlap_mentioned_p): Use subreg_nregs.
> 	* rtl.h (subreg_nregs): Declare.
> 	* doc/tm.texi (HARD_REGNO_NREGS_HAS_PADDING): Update to refer to
> 	subreg_get_info.
> 	* caller-save.c (mark_set_regs, add_stored_regs): Use
> 	subreg_nregs.
> 	* df-scan.c (df_ref_record): Use subreg_nregs.
> 	* flow.c (mark_set_1): Use subreg_nregs.
> 	* postreload.c (move2add_note_store): Use subreg_nregs.
> 	* reload.c (decompose, refers_to_regno_for_reload_p,
> 	reg_overlap_mentioned_for_reload_p): Use subreg_nregs.
> 	* resource.c (update_live_status, mark_referenced_resources,
> 	mark_set_resources): Use subreg_nregs.

This breaks ia64.

if [ x"-fpic" != x ]; then \
  /tmp/cvs/gcc-20061221/Build/./prev-gcc/xgcc -B/tmp/cvs/gcc-20061221/Build/./prev-gcc/ -B/tmp/cvs/gcc-20061221/Build/root/ia64-suse-linux/bin/ -c -DHAVE_CONFIG_H -g -O2 -I. -I../../libiberty/../include  -W -Wall -pedantic -Wwrite-strings -Wstrict-prototypes -Wc++-compat -fpic ../../libiberty/regex.c -o pic/regex.o; \
else true; fi
../../libiberty/regex.c: In function 'byte_regex_compile':
../../libiberty/regex.c:4221: internal compiler error: in subreg_get_info, at rtlanal.c:3034

#1  0x40000000006f0720 in subreg_get_info (xregno=<value optimized out>, 
    xmode=BImode, offset=0, ymode=BImode, info=0x607ffffffeb69c60)
    at ../../gcc/rtlanal.c:3034
3034          gcc_assert (regsize_xmode * nregs_xmode == GET_MODE_SIZE (xmode));
(gdb) p regsize_xmode
$1 = 0
(gdb) p nregs_xmode 
$2 = 2
(gdb) p xmode
$3 = BImode

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



More information about the Gcc-patches mailing list