Bug 52086

Summary: Nullable structs with implicit operators generate invalid IL code when compiling with Mono
Product: [Mono] Compilers Reporter: Hans Wolff <h.wolff>
Component: C#Assignee: Marek Safar <masafa>
Status: RESOLVED FIXED    
Severity: normal CC: h.wolff, mono-bugs+mono
Priority: ---    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Tags: Is this bug a regression?: ---
Last known good build:
Attachments: Small project to reproduce the crash

Description Hans Wolff 2017-01-31 17:07:20 UTC
Created attachment 19667 [details]
Small project to reproduce the crash

Comparing a nullable struct with overloaded implicit operators to a non-nullable representation crashes the application when compiled under Mono.

Steps to reproduce using already installed Mono:

> xbuild NullableStructBug.csproj
> mono bin/Debug/NullableStructBug.exe

Alternative steps to reproduce using Docker:

> docker build -t bug . && docker run -it --rm bug

Expected output (as seen when compiled using MS .NET Framework):

"All OK"

Actual output (when compiled using Mono):

"Unhandled Exception:
System.InvalidProgramException: Invalid IL code in NullableStructBug.Program:Main (): IL_0037: clt"
Comment 1 Marek Safar 2017-02-15 16:26:57 UTC
Fixed in master