[Testcases,committed] [Was Re: C++ PATCH: PR 11852]
Andrew Pinski
pinskia@physics.uc.edu
Mon Sep 8 03:07:00 GMT 2003
On Sunday, Sep 7, 2003, at 16:46 US/Pacific, Mark Mitchell wrote:
>
> This PR demonstrated the presence of totally bogus code in
> initializer_constant_valid_p; for a CONSTRUCTOR, only the last element
> of the CONSTRUCTOR was being checked.
>
> Bootstrapped and tested on i686-pc-linux-gnu, applied on the mainline
> and on the branch.
>
> --
> Mark Mitchell
> CodeSourcery, LLC
> mark@codesourcery.com
>
> 2003-09-07 Mark Mitchell <mark@codesourcery.com>
>
> PR c++/11852
> * varasm.c (initializer_constant_valid_p): Correct logic for
> CONSTRUCTORs.
>
> 2003-09-07 Mark Mitchell <mark@codesourcery.com>
>
> PR c++/11852
> * g++.dg/init/struct1.C: New test.
>
This patch also fixes PR middle-end/11665 so I committed the testcases
for them on both the mainline and the 3.3 branch:
ChangeLog:
2003-09-07 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/11665
* gcc.c-torture/compile/20030907-1.c: New test.
* g++.dg/init/array11.C: New test.
gcc.c-torture/compile/20030907-1.c, g++.dg/init/array11.C
(yes they are both the same, but it should run though both front-ends):
/* PR 11665
Orgin: jwhite@cse.unl.edu
The problem was in initializer_constant_valid_p,
"for a CONSTRUCTOR, only the last element
of the CONSTRUCTOR was being checked"
(from the email of the patch which fixed this).
This used to ICE because GCC thought gdt_table was a
constant value when it is not. */
int x;
struct gdt
{
unsigned a,b,c,d,e,f;
};
void f()
{
struct gdt gdt_table[2]=
{
{
0,
( (((unsigned)(&x))<<(24))&(-1<<(8)) ),
},
};
}
More information about the Gcc-patches
mailing list