From: SourceForge.net <no...@so...> - 2007-06-19 17:41:53
|
Bugs item #1739860, was opened at 2007-06-19 19:41 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Icode generator Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Jesper Hansen (yasir) Assigned to: Nobody/Anonymous (nobody) Summary: sdcc does not work correctly on some platforms. Initial Comment: The sdcc compiler contains many casts from double to unsigned int/long, and assumes that the value won't be clamped to a positive value. Constructs like this, is used in many places: ... = (unsigned long) floatFromVal(...); On MacOS (intel, and possible on other platforms using gcc and sse) this won't work since gcc will clamp the returned float to a value valid for an unsigned long. I believe that its compiler specific what happens when casting a negative float/double to an unsigned integer. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 |
From: SourceForge.net <no...@so...> - 2007-06-19 17:52:57
|
Bugs item #1739860, was opened at 2007-06-19 19:41 Message generated for change (Comment added) made by yasir You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Icode generator Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Jesper Hansen (yasir) Assigned to: Nobody/Anonymous (nobody) Summary: sdcc does not work correctly on some platforms. Initial Comment: The sdcc compiler contains many casts from double to unsigned int/long, and assumes that the value won't be clamped to a positive value. Constructs like this, is used in many places: ... = (unsigned long) floatFromVal(...); On MacOS (intel, and possible on other platforms using gcc and sse) this won't work since gcc will clamp the returned float to a value valid for an unsigned long. I believe that its compiler specific what happens when casting a negative float/double to an unsigned integer. ---------------------------------------------------------------------- >Comment By: Jesper Hansen (yasir) Date: 2007-06-19 19:52 Message: Logged In: YES user_id=1378 Originator: YES Sorry, I should have added this in the bug (from the Ansi C Programming Language book, 2nd rev, page 159): A.6.3 Integer and Floating When a value of floating type is converted to integral type, the fractional part is discarded; if the resulting value cannot be represented in the integral type, the behavior is undefined. In particular, the result of converting negative floating values to unsigned integral types is not specified. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 |
From: SourceForge.net <no...@so...> - 2007-07-09 15:16:16
|
Bugs item #1739860, was opened at 2007-06-19 19:41 Message generated for change (Comment added) made by maartenbrock You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Icode generator Group: None >Status: Pending Resolution: None Priority: 5 Private: No Submitted By: Jesper Hansen (yasir) Assigned to: Nobody/Anonymous (nobody) Summary: sdcc does not work correctly on some platforms. Initial Comment: The sdcc compiler contains many casts from double to unsigned int/long, and assumes that the value won't be clamped to a positive value. Constructs like this, is used in many places: ... = (unsigned long) floatFromVal(...); On MacOS (intel, and possible on other platforms using gcc and sse) this won't work since gcc will clamp the returned float to a value valid for an unsigned long. I believe that its compiler specific what happens when casting a negative float/double to an unsigned integer. ---------------------------------------------------------------------- >Comment By: Maarten Brock (maartenbrock) Date: 2007-07-09 17:16 Message: Logged In: YES user_id=888171 Originator: NO I do not fully grasp why this is a bug. Whenever a construct like this is used I think the compiler already knows the value is in the expected range. The double float is just used as the smallest common bigger type to hold all possible values in float/long/short/char/... ---------------------------------------------------------------------- Comment By: Jesper Hansen (yasir) Date: 2007-06-19 19:52 Message: Logged In: YES user_id=1378 Originator: YES Sorry, I should have added this in the bug (from the Ansi C Programming Language book, 2nd rev, page 159): A.6.3 Integer and Floating When a value of floating type is converted to integral type, the fractional part is discarded; if the resulting value cannot be represented in the integral type, the behavior is undefined. In particular, the result of converting negative floating values to unsigned integral types is not specified. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 |
From: SourceForge.net <no...@so...> - 2007-08-09 02:20:11
|
Bugs item #1739860, was opened at 2007-06-19 10:41 Message generated for change (Comment added) made by sf-robot You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Icode generator Group: None >Status: Closed Resolution: None Priority: 5 Private: No Submitted By: Jesper Hansen (yasir) Assigned to: Nobody/Anonymous (nobody) Summary: sdcc does not work correctly on some platforms. Initial Comment: The sdcc compiler contains many casts from double to unsigned int/long, and assumes that the value won't be clamped to a positive value. Constructs like this, is used in many places: ... = (unsigned long) floatFromVal(...); On MacOS (intel, and possible on other platforms using gcc and sse) this won't work since gcc will clamp the returned float to a value valid for an unsigned long. I believe that its compiler specific what happens when casting a negative float/double to an unsigned integer. ---------------------------------------------------------------------- >Comment By: SourceForge Robot (sf-robot) Date: 2007-08-08 19:20 Message: Logged In: YES user_id=1312539 Originator: NO This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 30 days (the time period specified by the administrator of this Tracker). ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2007-07-09 08:16 Message: Logged In: YES user_id=888171 Originator: NO I do not fully grasp why this is a bug. Whenever a construct like this is used I think the compiler already knows the value is in the expected range. The double float is just used as the smallest common bigger type to hold all possible values in float/long/short/char/... ---------------------------------------------------------------------- Comment By: Jesper Hansen (yasir) Date: 2007-06-19 10:52 Message: Logged In: YES user_id=1378 Originator: YES Sorry, I should have added this in the bug (from the Ansi C Programming Language book, 2nd rev, page 159): A.6.3 Integer and Floating When a value of floating type is converted to integral type, the fractional part is discarded; if the resulting value cannot be represented in the integral type, the behavior is undefined. In particular, the result of converting negative floating values to unsigned integral types is not specified. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 |
From: SourceForge.net <no...@so...> - 2007-08-21 04:29:44
|
Bugs item #1739860, was opened at 2007-06-19 10:41 Message generated for change (Comment added) made by ke6jjj You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Icode generator Group: None Status: Closed Resolution: None Priority: 5 Private: No Submitted By: Jesper Hansen (yasir) Assigned to: Nobody/Anonymous (nobody) Summary: sdcc does not work correctly on some platforms. Initial Comment: The sdcc compiler contains many casts from double to unsigned int/long, and assumes that the value won't be clamped to a positive value. Constructs like this, is used in many places: ... = (unsigned long) floatFromVal(...); On MacOS (intel, and possible on other platforms using gcc and sse) this won't work since gcc will clamp the returned float to a value valid for an unsigned long. I believe that its compiler specific what happens when casting a negative float/double to an unsigned integer. ---------------------------------------------------------------------- Comment By: Jeremy Cooper (ke6jjj) Date: 2007-08-20 21:29 Message: Logged In: YES user_id=531281 Originator: NO I have encountered this very bug in tracker id #1777758. Yasir, you are correct: this operation is undefined whenever floatFromVal() returns a number less than -1. ---------------------------------------------------------------------- Comment By: SourceForge Robot (sf-robot) Date: 2007-08-08 19:20 Message: Logged In: YES user_id=1312539 Originator: NO This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 30 days (the time period specified by the administrator of this Tracker). ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2007-07-09 08:16 Message: Logged In: YES user_id=888171 Originator: NO I do not fully grasp why this is a bug. Whenever a construct like this is used I think the compiler already knows the value is in the expected range. The double float is just used as the smallest common bigger type to hold all possible values in float/long/short/char/... ---------------------------------------------------------------------- Comment By: Jesper Hansen (yasir) Date: 2007-06-19 10:52 Message: Logged In: YES user_id=1378 Originator: YES Sorry, I should have added this in the bug (from the Ansi C Programming Language book, 2nd rev, page 159): A.6.3 Integer and Floating When a value of floating type is converted to integral type, the fractional part is discarded; if the resulting value cannot be represented in the integral type, the behavior is undefined. In particular, the result of converting negative floating values to unsigned integral types is not specified. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 |
From: SourceForge.net <no...@so...> - 2007-09-16 19:19:41
|
Bugs item #1739860, was opened at 2007-06-19 19:41 Message generated for change (Comment added) made by borutr You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Icode generator Group: None >Status: Open Resolution: None Priority: 5 Private: No Submitted By: Jesper Hansen (yasir) >Assigned to: Borut Ražem (borutr) Summary: sdcc does not work correctly on some platforms. Initial Comment: The sdcc compiler contains many casts from double to unsigned int/long, and assumes that the value won't be clamped to a positive value. Constructs like this, is used in many places: ... = (unsigned long) floatFromVal(...); On MacOS (intel, and possible on other platforms using gcc and sse) this won't work since gcc will clamp the returned float to a value valid for an unsigned long. I believe that its compiler specific what happens when casting a negative float/double to an unsigned integer. ---------------------------------------------------------------------- >Comment By: Borut Ražem (borutr) Date: 2007-09-16 21:19 Message: Logged In: YES user_id=568035 Originator: NO This is a bug and affects the sdcc on i386 Mac OS X 10.4.5 & gcc 4.0.1 dramatically: a lot of regression tests fail. It is interesting that on OS X 10.4.1 & gcc 4.0.0 the regression tests are executed without errors... Borut ---------------------------------------------------------------------- Comment By: Jeremy Cooper (ke6jjj) Date: 2007-08-21 06:29 Message: Logged In: YES user_id=531281 Originator: NO I have encountered this very bug in tracker id #1777758. Yasir, you are correct: this operation is undefined whenever floatFromVal() returns a number less than -1. ---------------------------------------------------------------------- Comment By: SourceForge Robot (sf-robot) Date: 2007-08-09 04:20 Message: Logged In: YES user_id=1312539 Originator: NO This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 30 days (the time period specified by the administrator of this Tracker). ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2007-07-09 17:16 Message: Logged In: YES user_id=888171 Originator: NO I do not fully grasp why this is a bug. Whenever a construct like this is used I think the compiler already knows the value is in the expected range. The double float is just used as the smallest common bigger type to hold all possible values in float/long/short/char/... ---------------------------------------------------------------------- Comment By: Jesper Hansen (yasir) Date: 2007-06-19 19:52 Message: Logged In: YES user_id=1378 Originator: YES Sorry, I should have added this in the bug (from the Ansi C Programming Language book, 2nd rev, page 159): A.6.3 Integer and Floating When a value of floating type is converted to integral type, the fractional part is discarded; if the resulting value cannot be represented in the integral type, the behavior is undefined. In particular, the result of converting negative floating values to unsigned integral types is not specified. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 |
From: SourceForge.net <no...@so...> - 2007-10-02 05:59:32
|
Bugs item #1739860, was opened at 2007-06-19 19:41 Message generated for change (Comment added) made by borutr You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Icode generator Group: None >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Jesper Hansen (yasir) Assigned to: Borut Ražem (borutr) Summary: sdcc does not work correctly on some platforms. Initial Comment: The sdcc compiler contains many casts from double to unsigned int/long, and assumes that the value won't be clamped to a positive value. Constructs like this, is used in many places: ... = (unsigned long) floatFromVal(...); On MacOS (intel, and possible on other platforms using gcc and sse) this won't work since gcc will clamp the returned float to a value valid for an unsigned long. I believe that its compiler specific what happens when casting a negative float/double to an unsigned integer. ---------------------------------------------------------------------- >Comment By: Borut Ražem (borutr) Date: 2007-10-02 07:59 Message: Logged In: YES user_id=568035 Originator: NO fixed in svn revision #4921. Borut ---------------------------------------------------------------------- Comment By: Borut Ražem (borutr) Date: 2007-09-16 21:19 Message: Logged In: YES user_id=568035 Originator: NO This is a bug and affects the sdcc on i386 Mac OS X 10.4.5 & gcc 4.0.1 dramatically: a lot of regression tests fail. It is interesting that on OS X 10.4.1 & gcc 4.0.0 the regression tests are executed without errors... Borut ---------------------------------------------------------------------- Comment By: Jeremy Cooper (ke6jjj) Date: 2007-08-21 06:29 Message: Logged In: YES user_id=531281 Originator: NO I have encountered this very bug in tracker id #1777758. Yasir, you are correct: this operation is undefined whenever floatFromVal() returns a number less than -1. ---------------------------------------------------------------------- Comment By: SourceForge Robot (sf-robot) Date: 2007-08-09 04:20 Message: Logged In: YES user_id=1312539 Originator: NO This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 30 days (the time period specified by the administrator of this Tracker). ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2007-07-09 17:16 Message: Logged In: YES user_id=888171 Originator: NO I do not fully grasp why this is a bug. Whenever a construct like this is used I think the compiler already knows the value is in the expected range. The double float is just used as the smallest common bigger type to hold all possible values in float/long/short/char/... ---------------------------------------------------------------------- Comment By: Jesper Hansen (yasir) Date: 2007-06-19 19:52 Message: Logged In: YES user_id=1378 Originator: YES Sorry, I should have added this in the bug (from the Ansi C Programming Language book, 2nd rev, page 159): A.6.3 Integer and Floating When a value of floating type is converted to integral type, the fractional part is discarded; if the resulting value cannot be represented in the integral type, the behavior is undefined. In particular, the result of converting negative floating values to unsigned integral types is not specified. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=1739860&group_id=599 |