On Nov 30, 2012, at 2:01 PM, Dmitri Gribenko <[email protected]> wrote:

> On Fri, Nov 30, 2012 at 1:50 PM, Stephen Canon <[email protected]> wrote:
>> • fixed indentation
>> • i32 and i64 will now have the correct size (instead of i32 being "long" 
>> even on LP64 platforms).  We can't do this for i8 or i16 without more 
>> invasive changes, so those will wait for another patch.
>> • MS literals get sign- or zero-extended as appropriate.
>> • MS literal path is generally cleaner.
>> • adopted hasInt128Type().
> 
> +  if (sizeof(__uint64_t) <= sizeof(int)) {
> +    ASSERT_TRUE(PrintedStmtMSMatches(
> +    "void A() { 1i64, -1i64, 1ui64; }",
> +    "A", "1 , -1 , 1U"));
> +  } else if (sizeof(__uint64_t) <= sizeof(long)) {
> +    ASSERT_TRUE(PrintedStmtMSMatches(
> +    "void A() { 1i64, -1i64, 1ui64; }",
> +    "A", "1L , -1L , 1UL"));
> +  } else {
> +    ASSERT_TRUE(PrintedStmtMSMatches(
> +    "void A() { 1i64, -1i64, 1ui64; }",
> +    "A", "1LL , -1LL , 1ULL"));
> +  }
> 
> This does not look portable.  Why can't we fold sizeof(__uint64_t) to
> 8?  And also, this assumes that clang will target the same platform as
> host...

Suggestions on how to fix this welcome; it's unquestionably more correct than 
the test that was previously here (which simply assumed that long = 32b, long 
long = 64b).

- Steve
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to