From: hubicka Date: Fri, 29 Jun 2007 20:13:41 +0000 (+0000) Subject: PR middle-end/32372 X-Git-Tag: upstream/4.9.2~47809 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eec33acaa617a5aff35eca6bdd365fcc1a73444d;p=platform%2Fupstream%2Flinaro-gcc.git PR middle-end/32372 * cse.c (cse_insn): Avoid invalid sharing in between register note and the insn pattern. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126122 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e01cf06..5da242a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-06-29 Jan Hubicka + + PR middle-end/32372 + * cse.c (cse_insn): Avoid invalid sharing in between register note and + the insn pattern. + 2007-06-29 Anatoly Sokolov PR target/32335 diff --git a/gcc/cse.c b/gcc/cse.c index 431a419..d333492 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -4181,7 +4181,7 @@ cse_insn (rtx insn, rtx libcall_insn) canon_reg (XEXP (tem, 0), insn); apply_change_group (); src_eqv = fold_rtx (XEXP (tem, 0), insn); - XEXP (tem, 0) = src_eqv; + XEXP (tem, 0) = copy_rtx (src_eqv); df_notes_rescan (insn); } @@ -7012,7 +7012,7 @@ struct tree_opt_pass pass_cse = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_df_finish | + TODO_df_finish | TODO_verify_rtl_sharing | TODO_dump_func | TODO_ggc_collect | TODO_verify_flow, /* todo_flags_finish */ @@ -7070,7 +7070,7 @@ struct tree_opt_pass pass_cse2 = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_df_finish | + TODO_df_finish | TODO_verify_rtl_sharing | TODO_dump_func | TODO_ggc_collect | TODO_verify_flow, /* todo_flags_finish */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 447bcde..5657411 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-06-29 Jan Hubicka + + PR middle-end/32372 + * gcc.c-torture/compile/pr32372.c: new. + 2007-06-29 Daniel Franke * gfortran.dg/operator_3.f90: New test. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr32372.c b/gcc/testsuite/gcc.c-torture/compile/pr32372.c new file mode 100644 index 0000000..cead1ca --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr32372.c @@ -0,0 +1,21 @@ +typedef struct AVCodecContext +{ + int flags; + void *priv_data; + char codec_name[32]; +} +AVCodecContext; +typedef struct ScanTable +{ + int obmc; + int umvplus; + int h263_aic; +} +MpegEncContext; +MPV_encode_init (AVCodecContext *avctx) +{ + MpegEncContext *s = avctx->priv_data; + s->umvplus = (avctx->flags & 0x02000000) ? 1 : 0; + s->h263_aic = (avctx->flags & 0x01000000) ? 1 : 0; + s->h263_aic = s->obmc || s->umvplus; +}