aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2011-02-24 04:02:33 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2011-02-24 04:02:33 +0000
commitacabc10c983db7b55fda3b02f7c0a9d779e0245a (patch)
treea06dfdf29bca59b52c07f8c4453bdce775ac7fcb /gcc
parent6540ddba79e0f4286e5f8899691d9c29677222a0 (diff)
downloadgcc-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.cc6
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);
}