[mcs] Simplify array element initializer load
authorMarek Safar <marek.safar@gmail.com>
Mon, 24 Feb 2014 15:00:16 +0000 (16:00 +0100)
committerMarek Safar <marek.safar@gmail.com>
Mon, 24 Feb 2014 15:01:22 +0000 (16:01 +0100)
mcs/mcs/expression.cs

index 59c1887a3b8ddc4e86bc692512bf051c39cbae84..0c78f1abbe464bc5e51cf1dbc7cee6a83aa84515 100644 (file)
@@ -7504,26 +7504,8 @@ namespace Mono.CSharp
                                        // If we are dealing with a struct, get the
                                        // address of it, so we can store it.
                                        //
-                                       if (dims == 1 && etype.IsStruct) {
-                                               switch (etype.BuiltinType) {
-                                               case BuiltinTypeSpec.Type.Byte:
-                                               case BuiltinTypeSpec.Type.SByte:
-                                               case BuiltinTypeSpec.Type.Bool:
-                                               case BuiltinTypeSpec.Type.Short:
-                                               case BuiltinTypeSpec.Type.UShort:
-                                               case BuiltinTypeSpec.Type.Char:
-                                               case BuiltinTypeSpec.Type.Int:
-                                               case BuiltinTypeSpec.Type.UInt:
-                                               case BuiltinTypeSpec.Type.Long:
-                                               case BuiltinTypeSpec.Type.ULong:
-                                               case BuiltinTypeSpec.Type.Float:
-                                               case BuiltinTypeSpec.Type.Double:
-                                                       break;
-                                               default:
-                                                       ec.Emit (OpCodes.Ldelema, etype);
-                                                       break;
-                                               }
-                                       }
+                                       if (dims == 1 && etype.IsStruct && !BuiltinTypeSpec.IsPrimitiveType (etype))
+                                               ec.Emit (OpCodes.Ldelema, etype);
 
                                        e.Emit (ec);