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

Michael Gottesman mgottesman at apple.com
Sun Dec 30 22:05:34 PST 2012


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121231/d86e99c8/attachment.html>


More information about the llvm-commits mailing list