r293475 - Revert "r293343 - [ubsan] Sanity-check shift amounts before truncation
Alex Lorenz via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 30 03:37:18 PST 2017
Author: arphaman
Date: Mon Jan 30 05:37:18 2017
New Revision: 293475
URL: http://llvm.org/viewvc/llvm-project?rev=293475&view=rev
Log:
Revert "r293343 - [ubsan] Sanity-check shift amounts before truncation
(fixes PR27271)"
After r293343 clang fails to compile itself with -fsanitize=undefined (
http://lab.llvm.org:8080/green/job/clang-stage2-cmake-RgSan_build/).
rdar://30259929
Removed:
cfe/trunk/test/CodeGen/ubsan-shift.c
Modified:
cfe/trunk/lib/CodeGen/CGExprScalar.cpp
Modified: cfe/trunk/lib/CodeGen/CGExprScalar.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprScalar.cpp?rev=293475&r1=293474&r2=293475&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGExprScalar.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp Mon Jan 30 05:37:18 2017
@@ -2751,8 +2751,8 @@ Value *ScalarExprEmitter::EmitShl(const
isa<llvm::IntegerType>(Ops.LHS->getType())) {
CodeGenFunction::SanitizerScope SanScope(&CGF);
SmallVector<std::pair<Value *, SanitizerMask>, 2> Checks;
- llvm::Value *WidthMinusOne = GetWidthMinusOneValue(Ops.LHS, Ops.RHS);
- llvm::Value *ValidExponent = Builder.CreateICmpULE(Ops.RHS, WidthMinusOne);
+ llvm::Value *WidthMinusOne = GetWidthMinusOneValue(Ops.LHS, RHS);
+ llvm::Value *ValidExponent = Builder.CreateICmpULE(RHS, WidthMinusOne);
if (SanitizeExponent) {
Checks.push_back(
Removed: cfe/trunk/test/CodeGen/ubsan-shift.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/ubsan-shift.c?rev=293474&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/ubsan-shift.c (original)
+++ cfe/trunk/test/CodeGen/ubsan-shift.c (removed)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-apple-darwin -fsanitize=shift-exponent -emit-llvm %s -o - | FileCheck %s
-
-// CHECK-LABEL: define i32 @f1
-int f1(int c, int shamt) {
-// CHECK: icmp ule i32 %{{.*}}, 31, !nosanitize
-// CHECK: icmp ule i32 %{{.*}}, 31, !nosanitize
- return 1 << (c << shamt);
-}
-
-// CHECK-LABEL: define i32 @f2
-int f2(long c, int shamt) {
-// CHECK: icmp ule i32 %{{.*}}, 63, !nosanitize
-// CHECK: icmp ule i64 %{{.*}}, 31, !nosanitize
- return 1 << (c << shamt);
-}
-
-// CHECK-LABEL: define i32 @f3
-unsigned f3(unsigned c, int shamt) {
-// CHECK: icmp ule i32 %{{.*}}, 31, !nosanitize
-// CHECK: icmp ule i32 %{{.*}}, 31, !nosanitize
- return 1U << (c << shamt);
-}
-
-// CHECK-LABEL: define i32 @f4
-unsigned f4(unsigned long c, int shamt) {
-// CHECK: icmp ule i32 %{{.*}}, 63, !nosanitize
-// CHECK: icmp ule i64 %{{.*}}, 31, !nosanitize
- return 1U << (c << shamt);
-}
More information about the cfe-commits
mailing list