Commit af116cae by Jakub Jelinek Committed by Jakub Jelinek

re PR debug/59992 (Compilation of insn-recog.c too slow due to var-tracking)

	PR debug/59992
	* var-tracking.c (adjust_mems): Before adding a SET
	to amd->side_effects, adjust it's SET_SRC using
	simplify_replace_fn_rtx.

	* gcc.dg/pr59992.c: New test.

From-SVN: r207562
parent 0f5e5e02
2014-02-06 Jakub Jelinek <jakub@redhat.com>
PR debug/59992
* var-tracking.c (adjust_mems): Before adding a SET
to amd->side_effects, adjust it's SET_SRC using
simplify_replace_fn_rtx.
2014-02-06 Alan Modra <amodra@gmail.com>
PR target/60032
......
2014-02-06 Jakub Jelinek <jakub@redhat.com>
PR debug/59992
* gcc.dg/pr59992.c: New test.
2014-02-06 Marc Glisse <marc.glisse@inria.fr>
* g++.dg/cpp0x/constexpr-attribute2.C: Restrict to target
......
/* PR debug/59992 */
/* { dg-do compile } */
/* { dg-require-effective-target run_expensive_tests } */
/* { dg-options "-O2 -g" } */
/* { dg-timeout-factor 16.0 } */
#define A(n) if (p[n]) { extern void foo##n (int, int, double, int, int); foo##n (p[n], 5, 8.0, p[n] + p[n + 1], 9); return; }
#define B(n) A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) A(n##5) A(n##6) A(n##7) A(n##8) A(n##9)
#define C(n) B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) B(n##5) B(n##6) B(n##7) B(n##8) B(n##9)
#define D(n) C(n##0) C(n##1) C(n##2) C(n##3) C(n##4) C(n##5) C(n##6) C(n##7) C(n##8) C(n##9)
#define E(n) D(n##0) D(n##1) D(n##2) D(n##3) D(n##4) D(n##5) D(n##6) D(n##7) D(n##8) D(n##9)
void
foo (int *p)
{
E(1)
}
......@@ -1067,10 +1067,13 @@ adjust_mems (rtx loc, const_rtx old_rtx, void *data)
? GET_MODE_SIZE (amd->mem_mode)
: -GET_MODE_SIZE (amd->mem_mode),
GET_MODE (loc)));
store_save = amd->store;
amd->store = false;
tem = simplify_replace_fn_rtx (tem, old_rtx, adjust_mems, data);
amd->store = store_save;
amd->side_effects = alloc_EXPR_LIST (0,
gen_rtx_SET (VOIDmode,
XEXP (loc, 0),
tem),
XEXP (loc, 0), tem),
amd->side_effects);
return addr;
case PRE_MODIFY:
......@@ -1080,10 +1083,14 @@ adjust_mems (rtx loc, const_rtx old_rtx, void *data)
addr = XEXP (loc, 0);
gcc_assert (amd->mem_mode != VOIDmode);
addr = simplify_replace_fn_rtx (addr, old_rtx, adjust_mems, data);
store_save = amd->store;
amd->store = false;
tem = simplify_replace_fn_rtx (XEXP (loc, 1), old_rtx,
adjust_mems, data);
amd->store = store_save;
amd->side_effects = alloc_EXPR_LIST (0,
gen_rtx_SET (VOIDmode,
XEXP (loc, 0),
XEXP (loc, 1)),
XEXP (loc, 0), tem),
amd->side_effects);
return addr;
case SUBREG:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment