This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug other/63504] [5 Regression] Issues found by --enable-checking=valgrind
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 26 Jan 2015 17:04:23 +0000
- Subject: [Bug other/63504] [5 Regression] Issues found by --enable-checking=valgrind
- Auto-submitted: auto-generated
- References: <bug-63504-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63504
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org,
| |segher at gcc dot gnu.org
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I can reproduce 3) with current trunk (again, using x86_64-linux ->
powerpc64-linux cross).
The problem is that on
(set (reg:DI 213)
(plus:DI (reg:DI 211 [ D.2022+-4 ])
(const_int -4294967297 [0xfffffffeffffffff])))
we get:
#6 0x000000000093ea52 in gen_raw_REG (mode=DImode, regno=215) at
../../gcc/emit-rtl.c:440
#7 0x000000000093fc35 in gen_reg_rtx (mode=DImode) at
../../gcc/emit-rtl.c:1081
#8 0x000000000116465c in gen_split_1299 (curr_insn=0x7ffff19a4000,
operands=0x1d86980 <recog_data>) at ../../gcc/config/rs6000/rs6000.md:1639
#9 0x00000000012693fd in split_11 (x0=0x7ffff19a3f48, insn=0x7ffff19a4000) at
../../gcc/config/rs6000/rs6000.md:305
#10 0x0000000001273870 in split_insns (x0=0x7ffff19a3f48,
uncast_insn=0x7ffff19a4000) at ../../gcc/config/rs6000/rs6000.md:12081
#11 0x00000000012a2c0e in combine_split_insns (pattern=0x7ffff19a3f48,
insn=0x7ffff19a4000) at ../../gcc/combine.c:552
#12 0x00000000012aaba1 in try_combine (i3=0x7ffff19a4000, i2=0x7ffff1935d80,
i1=0x7ffff1935d40, i0=0x0, new_direct_jump_p=0x7fffffffde7c,
last_combined_insn=0x7ffff19a4000) at ../../gcc/combine.c:3482
#13 0x00000000012a49d4 in combine_instructions (f=0x7ffff19698f8, nregs=215) at
../../gcc/combine.c:1396
#14 0x00000000012c7d52 in rest_of_handle_combine () at
../../gcc/combine.c:14107
combine_split_insns takes care to adjust reg_stat vector, but
regstat_n_sets_and_refs unfortunately is not a vector, and there is no function
to reallocate it and update for the added pseudos.
So, either we need to change that into a vector and add some entry point to
grow it, or guard all uses of REG_N_SETS etc. in the combiner with comparison
against maximum pseudo at the start of combine, something else?