[Mono-bugs] [Bug 33151][Wis] New - MCS creates bad MSIL for if statement

bugzilla-daemon@rocky.ximian.com bugzilla-daemon@rocky.ximian.com
1 Nov 2002 17:04:15 -0000


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by david_stephenson@hp.com.

http://bugzilla.ximian.com/show_bug.cgi?id=33151

--- shadow/33151	Fri Nov  1 12:04:15 2002
+++ shadow/33151.tmp.315	Fri Nov  1 12:04:15 2002
@@ -0,0 +1,52 @@
+Bug#: 33151
+Product: Mono/MCS
+Version: unspecified
+OS: 
+OS Details: 
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Wishlist
+Component: Misc
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: david_stephenson@hp.com               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: MCS creates bad MSIL for if statement
+
+Description of Problem:
+MCS seems to create code for "if(boolmethd() == true)" which does not 
+evalulate property on mono, clix and .netCLR
+
+Steps to reproduce the problem:
+
+compile the attached program and run under any CLR with a single argument 
+to a file which has more than 2K characters in it (just the size of the 
+internal buffer)
+
+Actual Results:
+
+the program will stop with an exception thrown from getNextChar().
+
+Expected Results:
+
+if the program is compiled by CSC.exe on windows then the programs 
+completes sucessfully.
+
+How often does this happen? 
+
+always.
+
+Additional Information:
+
+
+I have been looking at this in some detail this is the smallest program 
+that I have manged to create which shows the problem. If you cut/paste the 
+getNextChar() method from the disassembled exe generated by CSC and 
+resasemble then the code works fine, so from that I guess there is 
+something wrong with the IL for getNextChar() if you change the code from 
+if(endOfBufferedChars() == true){ to if(endOfBufferedChars()){ then the 
+program works fine......! The IL looks fine to me but all the CLR version 
+I have tried barf on the exe so something must be wrong...