diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2011-02-24 04:02:33 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2011-02-24 04:02:33 +0000 |
commit | acabc10c983db7b55fda3b02f7c0a9d779e0245a (patch) | |
tree | a06dfdf29bca59b52c07f8c4453bdce775ac7fcb /gcc | |
parent | 6540ddba79e0f4286e5f8899691d9c29677222a0 (diff) | |
download | gcc-acabc10c983db7b55fda3b02f7c0a9d779e0245a.zip gcc-acabc10c983db7b55fda3b02f7c0a9d779e0245a.tar.gz gcc-acabc10c983db7b55fda3b02f7c0a9d779e0245a.tar.bz2 |
Don't crash on type switch of untyped value.
From-SVN: r170456
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/go/gofrontend/statements.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/statements.cc b/gcc/go/gofrontend/statements.cc index 629fdd8..c87574d 100644 --- a/gcc/go/gofrontend/statements.cc +++ b/gcc/go/gofrontend/statements.cc @@ -3911,7 +3911,11 @@ Type_switch_statement::do_lower(Gogo*, Block* enclosing) if (val_type->is_nil_type()) rhs = Expression::make_nil(loc); else - rhs = Expression::make_type_descriptor(val_type, loc); + { + if (val_type->is_abstract()) + val_type = val_type->make_non_abstract_type(); + rhs = Expression::make_type_descriptor(val_type, loc); + } Statement* s = Statement::make_assignment(lhs, rhs, loc); b->add_statement(s); } |