1
0
Fork 0
mirror of https://github.com/llvm/llvm-project.git synced 2026-02-27 13:44:11 +01:00
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. http://llvm.org
  • LLVM 42.1%
  • C++ 30.2%
  • C 13%
  • Assembly 9.9%
  • MLIR 1.6%
  • Other 2.8%
Find a file
Balázs Benics 2f4624613d
[analyzer] Fix crash in MallocChecker when a function has both ownership_returns and ownership_takes (#183583)
When a function was annotated with both `ownership_returns` and
`ownership_takes` (or `ownership_holds`), MallocChecker::evalCall would
fall into the freeing-only branch (isFreeingOwnershipAttrCall) and call
checkOwnershipAttr without first calling MallocBindRetVal. That meant no
heap symbol had been conjured for the return value, so
checkOwnershipAttr later dereferenced a null/invalid symbol and crashed.

Fix: merge the two dispatch branches so that MallocBindRetVal is always
called first whenever ownership_returns is present, regardless of
whether the function also carries ownership_takes/ownership_holds.

The crash was introduced in #106081
339282d49f.
Released in clang-20, and crashing ever since.

Fixes #183344.

Assisted-By: claude
2026-02-27 12:36:29 +00:00
.ci
.github
bolt
clang
clang-tools-extra
cmake
compiler-rt
cross-project-tests
flang
flang-rt
libc
libclc
libcxx
libcxxabi
libsycl
libunwind
lld
lldb
llvm
llvm-libgcc
mlir
offload
openmp
orc-rt
polly
runtimes
third-party
utils/bazel
.clang-format
.clang-format-ignore
.clang-tidy
.git-blame-ignore-revs
.gitattributes
.gitignore
.mailmap
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE.TXT
pyproject.toml
README.md
SECURITY.md

The LLVM Compiler Infrastructure

OpenSSF Scorecard OpenSSF Best Practices libc++

Welcome to the LLVM project!

This repository contains the source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and run-time environments.

The LLVM project has multiple components. The core of the project is itself called "LLVM". This contains all of the tools, libraries, and header files needed to process intermediate representations and convert them into object files. Tools include an assembler, disassembler, bitcode analyzer, and bitcode optimizer.

C-like languages use the Clang frontend. This component compiles C, C++, Objective-C, and Objective-C++ code into LLVM bitcode -- and from there into object files, using LLVM.

Other components include: the libc++ C++ standard library, the LLD linker, and more.

Getting the Source Code and Building LLVM

Consult the Getting Started with LLVM page for information on building and running LLVM.

For information on how to contribute to the LLVM project, please take a look at the Contributing to LLVM guide.

Getting in touch

Join the LLVM Discourse forums, Discord chat, LLVM Office Hours or Regular sync-ups.

The LLVM project has adopted a code of conduct for participants to all modes of communication within the project.