[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