]> gcc.gnu.org Git - gcc.git/commitdiff
re PR rtl-optimization/32372 (ICE in df_refs_verify, at df-scan.c:4065)
authorJan Hubicka <jh@suse.cz>
Fri, 29 Jun 2007 20:13:41 +0000 (22:13 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 29 Jun 2007 20:13:41 +0000 (20:13 +0000)
PR middle-end/32372
* cse.c (cse_insn): Avoid invalid sharing in between register note and
the insn pattern.

From-SVN: r126122

gcc/ChangeLog
gcc/cse.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr32372.c [new file with mode: 0644]

index e01cf06f0af767ace253231202aa44686d45584b..5da242ac5e70f0b87a456a16df0670229ef65476 100644 (file)
@@ -1,3 +1,9 @@
+2007-06-29 Jan Hubicka  <jh@suse.cz>
+
+       PR middle-end/32372
+       * cse.c (cse_insn): Avoid invalid sharing in between register note and
+       the insn pattern.
+
 2007-06-29 Anatoly Sokolov <aesok@post.ru>
 
        PR target/32335
index 431a4194bef0c6e54f87a35fa6c84324c8a99db8..d3334925ea0dc73000726392cc6d757eabbf3d2c 100644 (file)
--- 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 */
index 447bcdeca8f07bf0c915dd82367451503e6a080b..5657411231d508287b669fb6b50d7a84fb03526d 100644 (file)
@@ -1,3 +1,8 @@
+2007-06-29  Jan Hubicka  <jh@suse.cz>
+
+       PR middle-end/32372
+       * gcc.c-torture/compile/pr32372.c: new.
+
 2007-06-29  Daniel Franke  <franke.daniel@gmail.com>
 
        * 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 (file)
index 0000000..cead1ca
--- /dev/null
@@ -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;
+}
This page took 0.173069 seconds and 5 git commands to generate.