mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 15:11:08 +08:00
re PR lto/41761 (lto1: error: type mismatch in component reference (const with non-const))
2009-10-20 Richard Guenther <rguenther@suse.de> PR lto/41761 * gimple.c (gimple_register_type): Make sure we register the types main variant first. * gcc.dg/lto/20091020-1_0.c: New testcase. * gcc.dg/lto/20091020-1_1.c: Likewise. * gcc.dg/lto/20091020-2_0.c: Likewise. * gcc.dg/lto/20091020-2_1.c: Likewise. From-SVN: r153012
This commit is contained in:
parent
dd8c071d66
commit
20d36f0ea6
@ -4,6 +4,12 @@
|
||||
* loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
|
||||
referenced just in DEBUG_INSNs.
|
||||
|
||||
2009-10-20 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/41761
|
||||
* gimple.c (gimple_register_type): Make sure we register
|
||||
the types main variant first.
|
||||
|
||||
2009-10-20 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* gimple.c (gimple_types_compatible_p): Simplify. Move
|
||||
|
@ -3809,6 +3809,12 @@ gimple_register_type (tree t)
|
||||
|
||||
gcc_assert (TYPE_P (t));
|
||||
|
||||
/* Always register the main variant first. This is important so we
|
||||
pick up the non-typedef variants as canonical, otherwise we'll end
|
||||
up taking typedef ids for structure tags during comparison. */
|
||||
if (TYPE_MAIN_VARIANT (t) != t)
|
||||
gimple_register_type (TYPE_MAIN_VARIANT (t));
|
||||
|
||||
if (gimple_types == NULL)
|
||||
gimple_types = htab_create (16381, gimple_type_hash, gimple_type_eq, 0);
|
||||
|
||||
|
@ -1,3 +1,11 @@
|
||||
2009-10-20 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/41761
|
||||
* gcc.dg/lto/20091020-1_0.c: New testcase.
|
||||
* gcc.dg/lto/20091020-1_1.c: Likewise.
|
||||
* gcc.dg/lto/20091020-2_0.c: Likewise.
|
||||
* gcc.dg/lto/20091020-2_1.c: Likewise.
|
||||
|
||||
2009-10-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/41340
|
||||
|
8
gcc/testsuite/gcc.dg/lto/20091020-1_0.c
Normal file
8
gcc/testsuite/gcc.dg/lto/20091020-1_0.c
Normal file
@ -0,0 +1,8 @@
|
||||
/* { dg-lto-do link } */
|
||||
/* { dg-lto-options {{-fPIC -shared -flto}} } */
|
||||
|
||||
typedef struct {
|
||||
int NumPackStreams;
|
||||
} CSzAr;
|
||||
void cli_7unz (CSzAr db) { }
|
||||
|
15
gcc/testsuite/gcc.dg/lto/20091020-1_1.c
Normal file
15
gcc/testsuite/gcc.dg/lto/20091020-1_1.c
Normal file
@ -0,0 +1,15 @@
|
||||
typedef struct {
|
||||
int NumPackStreams;
|
||||
} CSzAr;
|
||||
typedef struct {
|
||||
CSzAr db;
|
||||
} CSzArEx;
|
||||
int SzArEx_Init(CSzArEx *p)
|
||||
{
|
||||
return p->db.NumPackStreams;
|
||||
}
|
||||
int SzArEx_GetFolderFullPackSize(const CSzArEx *p)
|
||||
{
|
||||
return p->db.NumPackStreams;
|
||||
}
|
||||
|
18
gcc/testsuite/gcc.dg/lto/20091020-2_0.c
Normal file
18
gcc/testsuite/gcc.dg/lto/20091020-2_0.c
Normal file
@ -0,0 +1,18 @@
|
||||
/* { dg-lto-do link } */
|
||||
/* { dg-lto-options {{-fPIC -shared -flto}} } */
|
||||
|
||||
typedef struct {
|
||||
int NumPackStreams;
|
||||
} CSzAr;
|
||||
typedef struct {
|
||||
CSzAr db;
|
||||
} CSzArEx;
|
||||
int SzArEx_Init(CSzArEx *p)
|
||||
{
|
||||
return p->db.NumPackStreams;
|
||||
}
|
||||
int SzArEx_GetFolderFullPackSize(const CSzArEx *p)
|
||||
{
|
||||
return p->db.NumPackStreams;
|
||||
}
|
||||
|
5
gcc/testsuite/gcc.dg/lto/20091020-2_1.c
Normal file
5
gcc/testsuite/gcc.dg/lto/20091020-2_1.c
Normal file
@ -0,0 +1,5 @@
|
||||
typedef struct {
|
||||
int NumPackStreams;
|
||||
} CSzAr;
|
||||
void cli_7unz (CSzAr db) { }
|
||||
|
Loading…
x
Reference in New Issue
Block a user