aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2007-09-12 08:07:12 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2007-09-12 08:07:12 +0000
commit7323b6643e2f929f49b68582217e9a9b2182df57 (patch)
tree1ad55e750f950710f5df8edf51de7ab752126a9b /gcc
parent3e708b2571e01c269d8eabfc9c741e00a3f89603 (diff)
downloadgcc-7323b6643e2f929f49b68582217e9a9b2182df57.zip
gcc-7323b6643e2f929f49b68582217e9a9b2182df57.tar.gz
gcc-7323b6643e2f929f49b68582217e9a9b2182df57.tar.bz2
re PR middle-end/33382 (internal compiler error: in get_constraint_for_component_ref, at tree-ssa-structalias.c:2454)
2007-09-12 Richard Guenther <rguenther@suse.de> PR middle-end/33382 * gcc.c-torture/compile/pr33382.c: New testcase. * gcc.c-torture/execute/pr33382.c: Likewise. From-SVN: r128419
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr33382.c95
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr33382.c21
3 files changed, 122 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dc18e62..621d8bd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2007-09-12 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/33382
+ * gcc.c-torture/compile/pr33382.c: New testcase.
+ * gcc.c-torture/execute/pr33382.c: Likewise.
+
2007-09-12 Christopher D. Rickett <crickett@lanl.gov>
PR fortran/33395
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr33382.c b/gcc/testsuite/gcc.c-torture/compile/pr33382.c
new file mode 100644
index 0000000..d83f74e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr33382.c
@@ -0,0 +1,95 @@
+typedef unsigned int size_t;
+typedef struct {
+ int disable;
+ char *searchconfig[];
+} config_t;
+typedef struct {
+ void *lng;
+} arglist_t;
+config_t config = {
+ .searchconfig = {
+ ((void *) 0)}
+};
+
+arglist_t arglist[] = {
+ {
+ &config.searchconfig[0]}
+};
+const int arglistsize = ((int) (sizeof(arglist) / sizeof(arglist_t)));
+void show_configuration(char *arg)
+{
+ int i;
+
+ if (!__extension__( {
+ size_t
+ __s1_len,
+ __s2_len; (__builtin_constant_p(arglist[i].lng)
+ && (__s1_len = (!((size_t)
+ (const void *)
+ 1)
+ || __s2_len >= 4))
+ ? : (__builtin_constant_p(arglist[i].lng)
+ && ((size_t)
+ (const void *)
+ 4)
+ ? (__builtin_constant_p(arg)
+ && ((size_t) (const void *) 1) ?
+ : (__extension__( {
+ __const * __s2 =
+ (__const *)
+ (arg);
+ register
+ __result =
+ (((__const
+ *) (arglist
+ [i].
+ lng))[0]
+ - __s2[0]);
+ if (__s1_len ==
+ 0) {
+ if (__s1_len ==
+ 0) {
+ __result =
+ (((__const
+ unsigned char
+ *) (__const
+ char
+ *)
+ (arglist[i].
+ lng))[3] -
+ __s2[3]);}
+ }
+ __result;}
+ ))):
+ (__builtin_constant_p(arg)
+ ?
+ (__builtin_constant_p
+ (arglist[i].lng)
+ ? : (__extension__( {
+ char
+ __result
+ =
+ ((__const
+ unsigned *)
+ (arg))[0];
+ if
+ (__s2_len
+ > 0
+ && __result ==
+ 0) {
+ if (__s2_len >
+ 1
+ && __result
+ == 0) {
+ }
+ }
+ __result;}
+ ))):
+
+
+
+ __builtin_strcmp(arglist[i].lng,
+ arg))));}
+ ))
+ return;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr33382.c b/gcc/testsuite/gcc.c-torture/execute/pr33382.c
new file mode 100644
index 0000000..ee53964
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr33382.c
@@ -0,0 +1,21 @@
+struct Foo {
+ int i;
+ int j[];
+};
+
+struct Foo x = { 1, { 2, 0, 2, 3 } };
+
+int foo(void)
+{
+ x.j[0] = 1;
+ return x.j[1];
+}
+
+extern void abort(void);
+
+int main()
+{
+ if (foo() != 0)
+ abort();
+ return 0;
+}