kekyo / IL2C

IL2C - A translator for ECMA-335 CIL/MSIL to C language.
Apache License 2.0
401 stars 36 forks source link

Array initialization trigger the issue of invalid opcode=stelem.i1 #94

Closed pengzeshan closed 2 years ago

pengzeshan commented 2 years ago

Here is the simple code to trigger the issue: namespace ConsoleApp1 { class Program { static void Main(string[] args) { } public byte[] GetArray(int value) { byte[] thirdArray = new byte[value]; for (int i = 0; i < value; i++) thirdArray[i] = 11; return thirdArray; } } } Error message: Severity Code Description Project File Line Suppression State Error MSB4018 The "Translate" task failed unexpectedly. IL2C.InvalidProgramSequenceException: Invalid opcode: Method=ConsoleApp1.Program.GetArray(System.Int32), OpCode=stelem.i1, Offset=16 at IL2C.AssemblyPreparer.d1.MoveNext() in C:\cygwin\home\damon.peng\workspace\workForCH\dotNet\IL2C\IL2C.Core\AssemblyPreparer.cs:line 64 at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.d172.MoveNext() at System.Linq.Buffer1..ctor(IEnumerable1 source) at System.Linq.OrderedEnumerable1.d1.MoveNext() at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func`2 elementSelector) at IL2C.AssemblyPreparer.PrepareMethodBody(IPrepareContext prepareContext, IMethodInformation method) in C:\cygwin\home\damon.peng\workspace\workForCH\dotNet\IL2C\IL2C.Core\AssemblyPreparer.cs:line 134 at IL2C.AssemblyPreparer.PrepareMethod(IPrepareContext prepareContext, IMethodInformation method) in C:\cygwin\home\damon.peng\workspace\workForCH\dotNet\IL2C\IL2C.Core\AssemblyPreparer.cs:line 256 at IL2C.AssemblyPreparer.<>cDisplayClass5_0.b4(<>fAnonymousType12 <>h__TransparentIdentifier0) in C:\cygwin\home\damon.peng\workspace\workForCH\dotNet\IL2C\IL2C.Core\AssemblyPreparer.cs:line 310 at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector) at IL2C.AssemblyPreparer.Prepare(TranslateContext translateContext, Func2 predictType, Func2 predictMethod) in C:\cygwin\home\damon.peng\workspace\workForCH\dotNet\IL2C\IL2C.Core\AssemblyPreparer.cs:line 305 at IL2C.AssemblyPreparer.Prepare(TranslateContext translateContext) in C:\cygwin\home\damon.peng\workspace\workForCH\dotNet\IL2C\IL2C.Core\AssemblyPreparer.cs:line 320 at IL2C.SimpleDriver.Translate(TextWriter logw, CodeTextStorage storage, Boolean readSymbols, Boolean enableBundler, TargetPlatforms targetPlatform, DebugInformationOptions debugInformationOptions, String assemblyPath) in C:\cygwin\home\damon.peng\workspace\workForCH\dotNet\IL2C\IL2C.Core\SimpleDriver.cs:line 39 at IL2C.SimpleDriver.TranslateAll(TextWriter logw, String outputPath, Boolean readSymbols, Boolean enableCpp, Boolean enableBundler, TargetPlatforms targetPlatform, DebugInformationOptions debugInformationOptions, IEnumerable`1 assemblyPaths) in C:\cygwin\home\damon.peng\workspace\workForCH\dotNet\IL2C\IL2C.Core\SimpleDriver.cs:line 121 at IL2C.SimpleDriver.TranslateAll(TextWriter logw, String outputPath, Boolean readSymbols, Boolean enableCpp, Boolean enableBundler, TargetPlatforms targetPlatform, DebugInformationOptions debugInformationOptions, String[] assemblyPaths) in C:\cygwin\home\damon.peng\workspace\workForCH\dotNet\IL2C\IL2C.Core\SimpleDriver.cs:line 142 at IL2C.Translate.Execute() in D:\PROJECT\IL2C\IL2C.Tasks\Translate.cs:line 86 at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() ConsoleApp1 C:\Users\damon.peng.nuget\packages\il2c.build\0.4.113\build\IL2C.Build.targets 19

IL2C build version: 0.4.113

kekyo commented 2 years ago

@pengzeshan It closed. Reopen when continue same problem.