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