From 72a54528dbba23fab21e2997bb6a3d80bf6f1a13 Mon Sep 17 00:00:00 2001 From: Alexander Monakov Date: Thu, 29 Jan 2009 13:53:15 +0300 Subject: [multiple changes] 2009-01-29 Andrey Belevantsev Alexander Monakov PR middle-end/38857 * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard register. (move_exprs_to_boundary): Change return type and pass through should_move from move_op. Relax assert. Update usage ... (schedule_expr_on_boundary): ... here. Use should_move instead of cant_move. (move_op_orig_expr_found): Indicate that insn was disconnected from stream. (code_motion_process_successors): Do not call after_merge_succs callback if original expression was not found when traversing any of the branches. (code_motion_path_driver): Change return type. Update prototype. (move_op): Update comment. Add a new parameter (should_move). Update prototype. Set *should_move based on indication provided by move_op_orig_expr_found. 2009-01-29 Steve Ellcey PR middle-end/38857 * gcc.c-torture/compile/pr38857.c: New test. From-SVN: r143753 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/compile/pr38857.c | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr38857.c (limited to 'gcc/testsuite') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 99844ee..b609538 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-01-29 Steve Ellcey + + PR middle-end/38857 + * gcc.c-torture/compile/pr38857.c: New test. + 2009-01-28 Paul Thomas PR fortran/38852 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr38857.c b/gcc/testsuite/gcc.c-torture/compile/pr38857.c new file mode 100644 index 0000000..2492b77 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr38857.c @@ -0,0 +1,22 @@ +static const int vs_total_ac_bits = 2680; +typedef struct EncBlockInfo { + short mb[64]; + unsigned char next[64]; +} EncBlockInfo; +inline void dv_guess_qnos(EncBlockInfo* blks, int* qnos) { + int size[5]; + int j, k, a, prev; + EncBlockInfo* b; + for(a=2; a==2 || vs_total_ac_bits < size[0]; a+=a){ + for (j=0; j<6*5; j++, b++) { + for (k= b->next[prev]; k<64; k= b->next[k]) { + if(b->mb[k] < a && b->mb[k] > -a){ + b->next[prev] = b->next[k]; + } + else{ + prev = k; + } + } + } + } +} -- cgit v1.1