// bool array can actually store any byte value
//
ig.Emit (OpCodes.Ldelem_U1);
- ig.Emit (OpCodes.Ldc_I4_1);
- ig.Emit (OpCodes.And);
+ ig.Emit (OpCodes.Ldc_I4_0);
+ ig.Emit (OpCodes.Cgt_Un);
break;
case BuiltinTypeSpec.Type.Byte:
ig.Emit (OpCodes.Ldelem_U1);
break;
case BuiltinTypeSpec.Type.Bool:
ig.Emit (OpCodes.Ldind_I1);
- ig.Emit (OpCodes.Ldc_I4_1);
- ig.Emit (OpCodes.And);
+ ig.Emit (OpCodes.Ldc_I4_0);
+ ig.Emit (OpCodes.Cgt_Un);
break;
case BuiltinTypeSpec.Type.ULong:
case BuiltinTypeSpec.Type.Long:
+// Compiler options: -unsafe
+
using System;
class BoolArrayWithByteValues
return 0;
}
+ static unsafe bool Ptr ()
+ {
+ bool rv;
+
+ var arr = new byte [256];
+ for (int i = 0; i < arr.Length; i++)
+ arr [i] = (byte) i;
+ fixed (byte* bptr = arr) {
+ rv = true;
+ for (int i = 0; i < arr.Length; i++) {
+ bool* boptr = (bool*)(bptr + i);
+ if (arr[i] > 0 && !*boptr)
+ rv = false;
+ System.Console.WriteLine ("#{0} = {1}", i, *boptr);
+ }
+ }
+
+ return rv;
+ }
+
static int Main()
{
var a = new bool[1];
if (res != 0)
return res;
+ if (!Ptr ())
+ return 6;
+
return 0;
}
}
\ No newline at end of file
<test name="test-146.cs">\r
<type name="Test">\r
<method name="Int32 Main()" attrs="150">\r
- <size>354</size>\r
+ <size>355</size>\r
</method>\r
<method name="Void .ctor()" attrs="6278">\r
<size>7</size>\r
<test name="test-729.cs">\r
<type name="Primes.MainClass">\r
<method name="Int32 Main()" attrs="150">\r
- <size>148</size>\r
+ <size>149</size>\r
</method>\r
<method name="Void .ctor()" attrs="6278">\r
<size>7</size>\r
<test name="test-898.cs">\r
<type name="BoolArrayWithByteValues">\r
<method name="Int32 Foo(Boolean ByRef)" attrs="145">\r
- <size>56</size>\r
+ <size>58</size>\r
</method>\r
<method name="Int32 Main()" attrs="145">\r
- <size>169</size>\r
+ <size>191</size>\r
</method>\r
<method name="Void .ctor()" attrs="6278">\r
<size>7</size>\r
</method>\r
+ <method name="Boolean Ptr()" attrs="145">\r
+ <size>167</size>\r
+ </method>\r
</type>\r
</test>\r
<test name="test-899.cs">\r
</type>\r
<type name="Tester+<ArrayAccessTest_1>c__async0">\r
<method name="Void MoveNext()" attrs="486">\r
- <size>337</size>\r
+ <size>338</size>\r
</method>\r
</type>\r
<type name="Tester+<ArrayAccessTest_2>c__async1">\r
</type>\r
<type name="Tester+<ArrayAccessTest_10>c__async9">\r
<method name="Void MoveNext()" attrs="486">\r
- <size>234</size>\r
+ <size>235</size>\r
</method>\r
<method name="Void SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)" attrs="486">\r
<size>13</size>\r