[Issue 7423] Regression (2.057): Hex Literals are no longer treated as unsigned.
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Mar 20 01:42:02 PDT 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7423
--- Comment #8 from Don <clugdbug at yahoo.com.au> 2012-03-20 01:42:17 PDT ---
(In reply to comment #7)
> I initially thought something along the same lines and tried it on a single
> statement like so:
>
> x = (cast(unit)((x&0xCCCC_CCCC)>>2)) + (x&0x3333_3333);
That wouldn't work, you have to cast before the shift happens.
x = ((cast(unit)(x&0xCCCC_CCCC))>>2) + (x&0x3333_3333);
Was this on a 64 bit system? (If it was on Windows, we can rule out this theory
entirely).
>
> No dice.
>
> DMD throws on every Hex literal in druntime/phobos,
What do you mean by that? Do you mean, generates an internal compiler error?
Can't reproduce that.
> regardless of usage; hence
> the cast(unit) sitting directly in front of the literal itself. Based on the
> debugging info that I see, it looks like DMD is internally creating int's out
> of hex literals somewhere.
Hex literals are supposed to be ints, not uints. The code should work anyway,
because x is a uint, therefore (x & LITERAL) is of type uint.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list