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
This commit is contained in:
Richard Guenther 2007-09-12 08:07:12 +00:00 committed by Richard Biener
parent 3e708b2571
commit 7323b6643e
3 changed files with 122 additions and 0 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}