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

Chandler Carruth chandlerc at google.com
Sun Dec 30 22:18:48 PST 2012


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121230/b9e5c69f/attachment.html>


More information about the llvm-commits mailing list