The issue is that the arguments to the greater-than operation (cgt.un) are given incompatible Boogie types (int and bool) — the bool is due to the store and subsequent load to Boolean-typed local variable 0. In fact, this is valid CIL code (e.g., according to ECMA-335), since Boolean values are loaded onto the stack as zero-extended int32s. As far as I can tell, there are no relevant type-conversion operations here.
As far as context goes, this is a minimization of the code generated for the TestExceptionsWhen test on Mono, which is trips the assertion. I suppose that different code is being generated on Windows (?).
This code is based on code generated with this compiler:
$ csc
Microsoft (R) Visual C# Compiler version 2.8.2.62916 (2ad4aabc)
Copyright (C) Microsoft Corporation. All rights reserved.
This assertion fails on the following program:
The issue is that the arguments to the greater-than operation (
cgt.un
) are given incompatible Boogie types (int
andbool
) — thebool
is due to the store and subsequent load to Boolean-typed local variable 0. In fact, this is valid CIL code (e.g., according to ECMA-335), since Boolean values are loaded onto the stack as zero-extendedint32
s. As far as I can tell, there are no relevant type-conversion operations here.As far as context goes, this is a minimization of the code generated for the
TestExceptionsWhen
test on Mono, which is trips the assertion. I suppose that different code is being generated on Windows (?).This code is based on code generated with this compiler: