On Fri, Nov 30, 2012 at 11:29 AM, Stephen Canon <[email protected]> wrote:
> 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).

Maybe you could extend the 'compile a literal string' mechanism to
allow you to specify a target triple?

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

Reply via email to