Bug 9186

Summary: ulong/float comparison miscompiled on 64bit Macs
Product: [Mono] Runtime Reporter: Marek Safar <masafa>
Component: JITAssignee: Bugzilla <bugzilla>
Severity: normal CC: mono-bugs+mono, mono-bugs+runtime, vargaz
Priority: ---    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Mac OS   
Tags: Is this bug a regression?: ---
Last known good build:

Description Marek Safar 2013-01-02 11:38:33 UTC
float b = 0f;
            if (b < ulong.MaxValue)
                Console.WriteLine ("hit");

"hit" is never hit when mono is compiled as 64 bit on mac
Comment 1 Zoltan Varga 2013-01-03 00:04:22 UTC
I can't reproduce this. Can you attach a complete testcase plus the generated .exe ?
Comment 2 Marek Safar 2013-01-03 11:33:24 UTC
This is actually AOT issue

class C
	public static void Main ()
		ulong ul = ulong.MaxValue;
		System.Console.WriteLine ((float) ul);

When compiled and run with mono JIT I get
when using --aot I get

My log

mono test-mcs.exe
[mono] ~/git/mono/mcs/mcs$ mono --aot test-mcs.exe
Mono Ahead of Time compiler - compiling assembly /Users/marek/git/mono/mcs/mcs/test-mcs.exe
Code: 163 Info: 5 Ex Info: 8 Unwind Info: 17 Class Info: 34 PLT: 3 GOT Info: 17 GOT: 28 Offsets: 48
Compiled: 2/2 (100%), No GOT slots: 1 (50%), Direct calls: 0 (100%)
Executing the native assembler: as -arch i386 -W  -o /var/folders/zw/_2mb6txx19b1c3g9ls4mwngr0000gn/T/mono_aot_1M2W4C.o /var/folders/zw/_2mb6txx19b1c3g9ls4mwngr0000gn/T/mono_aot_1M2W4C
Executing the native linker: gcc -m32 -dynamiclib -o /Users/marek/git/mono/mcs/mcs/test-mcs.exe.dylib.tmp /var/folders/zw/_2mb6txx19b1c3g9ls4mwngr0000gn/T/mono_aot_1M2W4C.o
Generating debug symbols: dsymutil /Users/marek/git/mono/mcs/mcs/test-mcs.exe.dylib
JIT time: 0 ms, Generation time: 0 ms, Assembly+Link time: 32 ms.
[mono] ~/git/mono/mcs/mcs$ mono test-mcs.exe
Comment 3 Zoltan Varga 2013-01-03 12:54:24 UTC
Fixed in master.