dim updated this revision to Diff 229172. dim added a comment. Now `opt` supports `-disable-builtin`, move the test to `llvm/test/Transforms/InstCombine`.
Also use code style of nearest preceding constructs. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70143/new/ https://reviews.llvm.org/D70143 Files: llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp llvm/test/Transforms/InstCombine/pr43081.ll Index: llvm/test/Transforms/InstCombine/pr43081.ll =================================================================== --- /dev/null +++ llvm/test/Transforms/InstCombine/pr43081.ll @@ -0,0 +1,15 @@ +; RUN: opt < %s -instcombine -disable-builtin strlen -S | FileCheck %s + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" + +declare i8* @strchr(i8*, i32) + +define i8* @pr43081(i8* %a) { +entry: + %a.addr = alloca i8*, align 8 + store i8* %a, i8** %a.addr, align 8 + %0 = load i8*, i8** %a.addr, align 8 + %call = call i8* @strchr(i8* %0, i32 0) + ret i8* %call +; CHECK: call i8* @strchr +} Index: llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp =================================================================== --- llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp +++ llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp @@ -364,8 +364,8 @@ StringRef Str; if (!getConstantStringInfo(SrcStr, Str)) { if (CharC->isZero()) // strchr(p, 0) -> p + strlen(p) - return B.CreateGEP(B.getInt8Ty(), SrcStr, emitStrLen(SrcStr, B, DL, TLI), - "strchr"); + if (Value *StrLen = emitStrLen(SrcStr, B, DL, TLI)) + return B.CreateGEP(B.getInt8Ty(), SrcStr, StrLen, "strchr"); return nullptr; }
Index: llvm/test/Transforms/InstCombine/pr43081.ll =================================================================== --- /dev/null +++ llvm/test/Transforms/InstCombine/pr43081.ll @@ -0,0 +1,15 @@ +; RUN: opt < %s -instcombine -disable-builtin strlen -S | FileCheck %s + +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" + +declare i8* @strchr(i8*, i32) + +define i8* @pr43081(i8* %a) { +entry: + %a.addr = alloca i8*, align 8 + store i8* %a, i8** %a.addr, align 8 + %0 = load i8*, i8** %a.addr, align 8 + %call = call i8* @strchr(i8* %0, i32 0) + ret i8* %call +; CHECK: call i8* @strchr +} Index: llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp =================================================================== --- llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp +++ llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp @@ -364,8 +364,8 @@ StringRef Str; if (!getConstantStringInfo(SrcStr, Str)) { if (CharC->isZero()) // strchr(p, 0) -> p + strlen(p) - return B.CreateGEP(B.getInt8Ty(), SrcStr, emitStrLen(SrcStr, B, DL, TLI), - "strchr"); + if (Value *StrLen = emitStrLen(SrcStr, B, DL, TLI)) + return B.CreateGEP(B.getInt8Ty(), SrcStr, StrLen, "strchr"); return nullptr; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits