[llvm-commits] [compiler-rt] r171273 - in /compiler-rt/trunk/lib/ubsan: lit_tests/Integer/negate-overflow.cpp ubsan_handlers.cc

Will Dietz wdietz2 at illinois.edu
Sun Dec 30 22:27:16 PST 2012


I'll commit fixed version shortly.

Very sorry, and understood regarding not breaking the build being paramount.

Happened due to machine I commit from not being the same as the one I
develop (and test) on for reasons not worth going into.  I'll fix that
so this won't happen again.

Sincerely,

~Will

On Mon, Dec 31, 2012 at 12:18 AM, Chandler Carruth <chandlerc at google.com> wrote:
> This breaks everyone's build -- this just doesn't compile.
>
> I've reverted this in r171277 until Will can look at it. Will, please double
> check that you've built successfully before re-committing it.
>
>
> On Sun, Dec 30, 2012 at 10:05 PM, Michael Gottesman <mgottesman at apple.com>
> wrote:
>>
>> This causes a build failure on Darwin:
>>
>> compiler-rt/lib/ubsan/ubsan_handlers.cc:107:10: error: use of undeclared
>> identifier 'Loc'
>>     Diag(Loc, DL_Error,
>>          ^
>> compiler-rt/lib/ubsan/ubsan_handlers.cc:112:10: error: use of undeclared
>> identifier 'Loc'
>>     Diag(Loc, DL_Error,
>>
>> I noticed in the function handleTypeMismatchImpl you explicitly grab Loc
>> so I am assuming this is an error in your code.
>>
>> Can you fix this?
>>
>> Michael
>>
>> On Dec 31, 2012, at 4:20 AM, Will Dietz <wdietz2 at illinois.edu> wrote:
>>
>> Author: wdietz2
>> Date: Sun Dec 30 20:20:55 2012
>> New Revision: 171273
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=171273&view=rev
>> Log:
>> [ubsan] Don't suggest casting to unsigned for unsigned unary minus
>> overflow.
>>
>> Modified:
>>    compiler-rt/trunk/lib/ubsan/lit_tests/Integer/negate-overflow.cpp
>>    compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc
>>
>> Modified:
>> compiler-rt/trunk/lib/ubsan/lit_tests/Integer/negate-overflow.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/lit_tests/Integer/negate-overflow.cpp?rev=171273&r1=171272&r2=171273&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/ubsan/lit_tests/Integer/negate-overflow.cpp
>> (original)
>> +++ compiler-rt/trunk/lib/ubsan/lit_tests/Integer/negate-overflow.cpp Sun
>> Dec 30 20:20:55 2012
>> @@ -1,7 +1,12 @@
>> -// RUN: %clang -fsanitize=signed-integer-overflow %s -o %t && %t 2>&1 |
>> FileCheck %s
>> +// RUN: %clang -fsanitize=signed-integer-overflow %s -o %t && %t 2>&1 |
>> FileCheck %s --check-prefix=CHECKS
>> +// RUN: %clang -fsanitize=unsigned-integer-overflow %s -o %t && %t 2>&1 |
>> FileCheck %s --check-prefix=CHECKU
>>
>> int main() {
>> +  // CHECKS-NOT: runtime error
>> +  // CHECKU: negate-overflow.cpp:[[@LINE+2]]:3: runtime error: negation
>> of 2147483648 cannot be represented in type 'unsigned int'
>> +  // CHECKU-NOT: cast to an unsigned
>>   -unsigned(-0x7fffffff - 1); // ok
>> -  // CHECK: negate-overflow.cpp:6:10: runtime error: negation of
>> -2147483648 cannot be represented in type 'int'; cast to an unsigned type to
>> negate this value to itself
>> +  // CHECKS: negate-overflow.cpp:[[@LINE+2]]:10: runtime error: negation
>> of -2147483648 cannot be represented in type 'int'; cast to an unsigned type
>> to negate this value to itself
>> +  // CHECKU-NOT: runtime error
>>   return -(-0x7fffffff - 1);
>> }
>>
>> Modified: compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc?rev=171273&r1=171272&r2=171273&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc (original)
>> +++ compiler-rt/trunk/lib/ubsan/ubsan_handlers.cc Sun Dec 30 20:20:55 2012
>> @@ -103,10 +103,15 @@
>>
>> void __ubsan::__ubsan_handle_negate_overflow(OverflowData *Data,
>>                                              ValueHandle OldVal) {
>> -  Diag(Data->Loc, DL_Error,
>> -       "negation of %0 cannot be represented in type %1; "
>> -       "cast to an unsigned type to negate this value to itself")
>> -    << Value(Data->Type, OldVal) << Data->Type;
>> +  if (Data->Type.isSignedIntegerTy())
>> +    Diag(Loc, DL_Error,
>> +         "negation of %0 cannot be represented in type %1; "
>> +         "cast to an unsigned type to negate this value to itself")
>> +      << Value(Data->Type, OldVal) << Data->Type;
>> +  else
>> +    Diag(Loc, DL_Error,
>> +         "negation of %0 cannot be represented in type %1")
>> +      << Value(Data->Type, OldVal) << Data->Type;
>> }
>> void __ubsan::__ubsan_handle_negate_overflow_abort(OverflowData *Data,
>>                                                     ValueHandle OldVal) {
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>



More information about the llvm-commits mailing list