From 0f3ed908c1f13f83da4b240f7595eb8d05e0a754 Mon Sep 17 00:00:00 2001 From: Alex Lorenz Date: Mon, 30 Jan 2017 11:37:18 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293475 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGExprScalar.cpp | 4 ++-- test/CodeGen/ubsan-shift.c | 29 ----------------------------- 2 files changed, 2 insertions(+), 31 deletions(-) delete mode 100644 test/CodeGen/ubsan-shift.c diff --git a/lib/CodeGen/CGExprScalar.cpp b/lib/CodeGen/CGExprScalar.cpp index 40d949dece..1b85c45cd4 100644 --- a/lib/CodeGen/CGExprScalar.cpp +++ b/lib/CodeGen/CGExprScalar.cpp @@ -2751,8 +2751,8 @@ Value *ScalarExprEmitter::EmitShl(const BinOpInfo &Ops) { isa(Ops.LHS->getType())) { CodeGenFunction::SanitizerScope SanScope(&CGF); SmallVector, 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( diff --git a/test/CodeGen/ubsan-shift.c b/test/CodeGen/ubsan-shift.c deleted file mode 100644 index ecdb2b9275..0000000000 --- a/test/CodeGen/ubsan-shift.c +++ /dev/null @@ -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); -} -- 2.40.0