fix gcc 4.3.x segfault triggered by using -frename-registers (reproduced on arm,...
[openwrt/svn-archive/archive.git] / toolchain / gcc / patches / 4.3.1 / 400-arm_register_fix.patch
1 Fixes GCC PR36350
2
3 --- a/gcc/regrename.c
4 +++ b/gcc/regrename.c
5 @@ -783,6 +783,10 @@ build_def_use (basic_block bb)
6 recog_data.operand_type[i] = OP_INOUT;
7 }
8
9 + /* Unshare dup_loc RTL */
10 + for (i = 0; i < recog_data.n_dups; i++)
11 + *recog_data.dup_loc[i] = copy_rtx(*recog_data.dup_loc[i]);
12 +
13 /* Step 1: Close chains for which we have overlapping reads. */
14 for (i = 0; i < n_ops; i++)
15 scan_rtx (insn, recog_data.operand_loc[i],
16 @@ -813,7 +817,7 @@ build_def_use (basic_block bb)
17 OP_IN, 0);
18
19 for (i = 0; i < recog_data.n_dups; i++)
20 - *recog_data.dup_loc[i] = copy_rtx (old_dups[i]);
21 + *recog_data.dup_loc[i] = old_dups[i];
22 for (i = 0; i < n_ops; i++)
23 *recog_data.operand_loc[i] = old_operands[i];
24 if (recog_data.n_dups)