aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2012-12-05 09:59:08 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-12-05 09:59:08 +0000
commit698ef65e2fee6c848f3b6ae0bf4a099c811e0022 (patch)
tree0b7fb7fe0eea47d5762c263242130d5663512258 /gcc
parent68fbd81bf093b2c14f94666153ca6428ac237880 (diff)
downloadgcc-698ef65e2fee6c848f3b6ae0bf4a099c811e0022.zip
gcc-698ef65e2fee6c848f3b6ae0bf4a099c811e0022.tar.gz
gcc-698ef65e2fee6c848f3b6ae0bf4a099c811e0022.tar.bz2
re PR tree-optimization/50222 (ICE with -O{1,2} -funswitch-loops -ftree-loop-distribution)
2012-12-05 Richard Biener <rguenther@suse.de> PR tree-optimization/50222 * gcc.dg/torture/pr50222.c: New testcase. From-SVN: r194188
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr50222.c31
2 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ba114ee..b04fee3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2012-12-05 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/50222
+ * gcc.dg/torture/pr50222.c: New testcase.
+
+2012-12-05 Richard Biener <rguenther@suse.de>
+
PR lto/55525
* gcc.dg/lto/pr55525_0.c: New testcase.
* gcc.dg/lto/pr55525_1.c: Likewise.
diff --git a/gcc/testsuite/gcc.dg/torture/pr50222.c b/gcc/testsuite/gcc.dg/torture/pr50222.c
new file mode 100644
index 0000000..f534d89
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr50222.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-funswitch-loops -ftree-loop-distribution" } */
+
+typedef struct AVProgram {
+ void *priv_data;
+ unsigned int nb_streams;
+} AVFormatContext;
+typedef struct {
+ unsigned short flags;
+ unsigned char stream_id;
+} FrameCode;
+typedef struct {
+ FrameCode frame_code[256];
+} NUTContext;
+void build_frame_code(AVFormatContext *s, int stream_id,
+ int is_audio, int pred_count)
+{
+ NUTContext *nut = s->priv_data;
+ int keyframe_0_esc = s->nb_streams > 2;
+ int start2 = 1 + 253*stream_id / s->nb_streams;
+ int key_frame;
+ for(key_frame=0; key_frame<2; key_frame++)
+ {
+ FrameCode *ft;
+ if (is_audio && keyframe_0_esc && key_frame==0)
+ continue;
+ ft= &nut->frame_code[start2];
+ ft->flags|= 3;
+ ft->stream_id= stream_id;
+ }
+}