diff options
author | Richard Guenther <rguenther@suse.de> | 2009-10-20 13:33:03 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-10-20 13:33:03 +0000 |
commit | 20d36f0ea670b235b672d1205eb437030dee7e7e (patch) | |
tree | 1c293e03073acf994f215b7e4a140572f557282b /gcc/gimple.c | |
parent | dd8c071d66169f4696a86b1ebe4638a26696bce7 (diff) | |
download | gcc-20d36f0ea670b235b672d1205eb437030dee7e7e.zip gcc-20d36f0ea670b235b672d1205eb437030dee7e7e.tar.gz gcc-20d36f0ea670b235b672d1205eb437030dee7e7e.tar.bz2 |
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
Diffstat (limited to 'gcc/gimple.c')
-rw-r--r-- | gcc/gimple.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/gimple.c b/gcc/gimple.c index d5b1cf7..f725a34 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -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); |