uabelho added a comment.

In D124658#3495973 <https://reviews.llvm.org/D124658#3495973>, @steakhal wrote:

> This patch triggers a crash with this minimized example.
> assertion at L205: `"The result operation type must have at least the same 
> number of bits as its operands."`
> [...]
> Please investigate this @tomasz-kaminski-sonarsource

Hi,

I've stumbled on this crash as well with this patch.
So

  clang --analyze foo.c

crashes with

  clang: ../../clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp:207: 
clang::ento::SVal (anonymous namespace)::SimpleSValBuilder::MakeSymIntVal(const 
clang::ento::SymExpr *, BinaryOperator::Opcode, const llvm::APSInt &, 
clang::QualType): Assertion `resultIntTy.getBitWidth() >= RHS.getBitWidth() && 
"The result operation type must have at least the same " "number of bits as its 
operands."' failed.
  PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ 
and include the crash backtrace, preprocessed source, and associated run script.
  Stack dump:
  0.    Program arguments: /repo/uabelho/master-github/llvm/build-all/bin/clang 
--analyze foo.c
  1.    <eof> parser at end of file
  2.    While analyzing stack: 
        #0 Calling h
  3.    foo.c:9:9: Error evaluating statement
  4.    foo.c:9:9: Error evaluating statement
   #0 0x0000000002e4fbf3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x2e4fbf3)
   #1 0x0000000002e4d86e llvm::sys::RunSignalHandlers() 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x2e4d86e)
   #2 0x0000000002e4ef92 llvm::sys::CleanupOnSignal(unsigned long) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x2e4ef92)
   #3 0x0000000002db4e03 (anonymous 
namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) 
CrashRecoveryContext.cpp:0:0
   #4 0x0000000002db4fbd CrashRecoverySignalHandler(int) 
CrashRecoveryContext.cpp:0:0
   #5 0x00007fd21e2ce630 __restore_rt sigaction.c:0:0
   #6 0x00007fd21ba15387 raise (/lib64/libc.so.6+0x36387)
   #7 0x00007fd21ba16a78 abort (/lib64/libc.so.6+0x37a78)
   #8 0x00007fd21ba0e1a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
   #9 0x00007fd21ba0e252 (/lib64/libc.so.6+0x2f252)
  #10 0x000000000467e0bb (anonymous 
namespace)::SimpleSValBuilder::MakeSymIntVal(clang::ento::SymExpr const*, 
clang::BinaryOperatorKind, llvm::APSInt const&, clang::QualType) 
SimpleSValBuilder.cpp:0:0
  #11 0x000000000467a94f (anonymous 
namespace)::SimpleSValBuilder::evalBinOpNN(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState
 const>, clang::BinaryOperatorKind, clang::ento::NonLoc, clang::ento::NonLoc, 
clang::QualType) SimpleSValBuilder.cpp:0:0
  #12 0x0000000004688f46 
clang::ento::SValBuilder::evalBinOp(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState
 const>, clang::BinaryOperatorKind, clang::ento::SVal, clang::ento::SVal, 
clang::QualType) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x4688f46)
  #13 0x000000000467f28e clang::ento::SymExprVisitor<(anonymous 
namespace)::SimpleSValBuilder::simplifySValOnce(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState
 const>, clang::ento::SVal)::Simplifier, 
clang::ento::SVal>::Visit(clang::ento::SymExpr const*) SimpleSValBuilder.cpp:0:0
  #14 0x000000000467eccc (anonymous 
namespace)::SimpleSValBuilder::simplifySValOnce(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState
 const>, clang::ento::SVal) SimpleSValBuilder.cpp:0:0
  #15 0x000000000467d814 (anonymous 
namespace)::SimpleSValBuilder::simplifySVal(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState
 const>, clang::ento::SVal) SimpleSValBuilder.cpp:0:0
  #16 0x0000000004679ec3 (anonymous 
namespace)::SimpleSValBuilder::evalBinOpNN(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState
 const>, clang::BinaryOperatorKind, clang::ento::NonLoc, clang::ento::NonLoc, 
clang::QualType) SimpleSValBuilder.cpp:0:0
  #17 0x0000000004688f46 
clang::ento::SValBuilder::evalBinOp(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState
 const>, clang::BinaryOperatorKind, clang::ento::SVal, clang::ento::SVal, 
clang::QualType) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x4688f46)
  #18 0x00000000045f509c 
clang::ento::ExprEngine::VisitBinaryOperator(clang::BinaryOperator const*, 
clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x45f509c)
  #19 0x00000000045e201a clang::ento::ExprEngine::Visit(clang::Stmt const*, 
clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x45e201a)
  #20 0x00000000045dd27e clang::ento::ExprEngine::ProcessStmt(clang::Stmt 
const*, clang::ento::ExplodedNode*) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x45dd27e)
  #21 0x00000000045dcf99 
clang::ento::ExprEngine::processCFGElement(clang::CFGElement, 
clang::ento::ExplodedNode*, unsigned int, clang::ento::NodeBuilderContext*) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x45dcf99)
  #22 0x00000000045c5300 
clang::ento::CoreEngine::HandlePostStmt(clang::CFGBlock const*, unsigned int, 
clang::ento::ExplodedNode*) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x45c5300)
  #23 0x00000000045c437a 
clang::ento::CoreEngine::ExecuteWorkList(clang::LocationContext const*, 
unsigned int, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x45c437a)
  #24 0x00000000041f10dc (anonymous 
namespace)::AnalysisConsumer::HandleCode(clang::Decl*, unsigned int, 
clang::ento::ExprEngine::InliningModes, llvm::DenseSet<clang::Decl const*, 
llvm::DenseMapInfo<clang::Decl const*, void> >*) AnalysisConsumer.cpp:0:0
  #25 0x00000000041d3e6a (anonymous 
namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&) 
AnalysisConsumer.cpp:0:0
  #26 0x00000000046c5f03 clang::ParseAST(clang::Sema&, bool, bool) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x46c5f03)
  #27 0x00000000038748a6 clang::FrontendAction::Execute() 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x38748a6)
  #28 0x00000000037e8fc4 
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x37e8fc4)
  #29 0x0000000003932562 
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x3932562)
  #30 0x0000000000a0feac cc1_main(llvm::ArrayRef<char const*>, char const*, 
void*) (/repo/uabelho/master-github/llvm/build-all/bin/clang+0xa0feac)
  #31 0x0000000000a0dccf ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) 
driver.cpp:0:0
  #32 0x00000000036577e2 void llvm::function_ref<void 
()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>
 >, std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >*, bool*) const::$_1>(long) Job.cpp:0:0
  #33 0x0000000002db4d21 
llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x2db4d21)
  #34 0x00000000036571d8 
clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>
 >, std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >*, bool*) const 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x36571d8)
  #35 0x000000000361abc6 
clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, 
clang::driver::Command const*&) const 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x361abc6)
  #36 0x000000000361b11a 
clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, 
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x361b11a)
  #37 0x0000000003637778 
clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, 
llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0x3637778)
  #38 0x0000000000a0d571 main 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0xa0d571)
  #39 0x00007fd21ba01555 __libc_start_main (/lib64/libc.so.6+0x22555)
  #40 0x0000000000a0a90c _start 
(/repo/uabelho/master-github/llvm/build-all/bin/clang+0xa0a90c)

with foo.c being

  long a;
  char c;
  long(d)(long f, long g) { return g ? f : 0; }
  void h() {
    for (;;) {
      long *e = h;
      d(-5L, *e) == a;
      char b = a;
      c = b + c;
    }
  }




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124658/new/

https://reviews.llvm.org/D124658

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to