D - [BUG] uint division is performed as int division
- Robert (22/22) Jan 14 2004 With -O option, uint division is performed as int division.
With -O option, uint division is performed as int division.
    int main() {
        uint f(uint n) { return n % 10; }
        printf("%u\n", uint.max);
        printf("%u\n", f(uint.max));
        printf("%d\n", uint.max);
        printf("%d\n", f(uint.max));
        return 0;
    }
Without -O:
    4294967295
    5
    -1
    5
With -O:
    4294967295
    4294967295
    -1
    -1
If the division is performed directly (i.e. uint.max % 10),
it works both with and without -O option.
This is a bug of inline expansion, isn't it?
 Jan 14 2004








 
  
  
  "Robert" <no spam.ne.jp>
 "Robert" <no spam.ne.jp>