Manual-sync mirror of chromium.googlesource.com/external/github.com/llvm/llvm-project (bare monorepo, no subtree suffix)
Find a file
Carlos Alberto Enciso bc9d5b01d3
[clang][DebugInfo] Add virtuality call-site target information in DWARF. (#182510)
Given the test case:

  struct CBase {
    virtual void foo();
  };

  void bar(CBase *Base) {
    Base->foo();
  }

and using '-emit-call-site-info' with llc, the following DWARF
is produced for the indirect call 'Base->foo()':

1$: DW_TAG_structure_type "CBase"
      ...
2$:   DW_TAG_subprogram "foo"
        ...

3$: DW_TAG_subprogram "bar"
      ...
4$:   DW_TAG_call_site
        ...

We add DW_AT_LLVM_virtual_call_origin to existing call-site
information, linking indirect calls to the function-declaration
they correspond to.

4$:   DW_TAG_call_site
        ...
        DW_AT_LLVM_virtual_call_origin (2$ "_ZN5CBase3fooEv")

The new attribute DW_AT_LLVM_virtual_call_origin helps to
address the ambiguity to any consumer due to the usage of
DW_AT_call_origin.

The functionality is available to all supported debuggers and
it is generated only for DWARF version 5 or greater.
2026-02-25 05:35:07 +00:00
.ci [green-dragon] fix test param in triggered bisection jobs (#181962) 2026-02-17 20:30:23 -08:00
.github [Github] Turn on prune-unused-branches workflow (#182985) 2026-02-24 11:14:54 -08:00
bolt [BOLT][BTI] Patch ignored functions in place when targeting them with indirect branches (#177165) 2026-02-24 11:09:42 +01:00
clang [clang][DebugInfo] Add virtuality call-site target information in DWARF. (#182510) 2026-02-25 05:35:07 +00:00
clang-tools-extra [clang-tidy][NFC] Remove ad-hoc unless(isExpansionInSystemHeader()) from matchers (#183020) 2026-02-24 14:24:19 -07:00
cmake [cmake][NFC] CRLF -> LF 2026-01-21 23:14:07 +01:00
compiler-rt Reapply "[ASan][Fuchsia] Have Fuchsia use a dynamic shadow start" (#182972) (#183154) 2026-02-24 13:56:35 -08:00
cross-project-tests [clang][DebugInfo] Add virtuality call-site target information in DWARF. (#182510) 2026-02-25 05:35:07 +00:00
flang [flang][mlir][OpenMP] Allow for flexible typing of linear step variables (#182816) 2026-02-24 18:01:23 -05:00
flang-rt [flang-rt] Temporarily disable destructor call in OwningPtr::delete_ptr. (#182635) 2026-02-20 19:49:54 -08:00
libc [libc] Add backwards-compatibility macro to struct stat. (#182601) 2026-02-24 22:28:30 +00:00
libclc [libclc][CMake] Add COMPONENT ${ARG_PARENT_TARGET} to install (#182716) 2026-02-23 08:20:42 +08:00
libcxx [libc++] Add segmented iterator optimization to std::equal (#179242) 2026-02-24 10:23:15 +01:00
libcxxabi [libc++] Remove _LIBCPP_CONSTINIT (#171802) 2026-01-20 12:51:43 +01:00
libsycl [libsycl] Fix build after global dtor change (#183077) 2026-02-24 15:44:07 +00:00
libunwind [libunwind] Fix building with EXCEPTION_DISPOSITION as enum (#180513) 2026-02-12 00:31:09 +02:00
lld Reland "CodeGen: Emit .prefalign directives based on the prefalign attribute." 2026-02-24 12:52:17 -08:00
lldb [lldb] Limit Python include dir to ScriptInterpreterPython (NFC) (#183236) 2026-02-25 05:00:51 +00:00
llvm [clang][DebugInfo] Add virtuality call-site target information in DWARF. (#182510) 2026-02-25 05:35:07 +00:00
llvm-libgcc
mlir [MLIR][NVVM] Enable result type inference (#181781) 2026-02-25 10:27:25 +05:30
offload [Offload][clang-linker-wrapper][SPIRV] Tell spirv-link to not optimize out exported symbols (#182930) 2026-02-24 15:10:59 +00:00
openmp [openmp] Allow testing OpenMP without a full clang build tree (#182470) 2026-02-23 23:01:44 +02:00
orc-rt [orc-rt] Use future rather than condition_variable for shutdown wait. (#179169) 2026-02-02 17:24:19 +11:00
polly [Polly] Update isl to isl-0.27-82-g38cf72a4 (#182786) 2026-02-23 01:09:36 +01:00
runtimes [cmake] forward LLVM_EXTERNAL_*_SOURCE_DIR to runtimes (#180399) 2026-02-24 18:29:55 +08:00
third-party [benchmark][NFC] Update cc_binary load (#169710) 2025-12-01 10:00:53 -06:00
utils/bazel [libc][math] Refactor nextdown family to header-only (#181679) 2026-02-24 21:38:33 +02:00
.clang-format Enforce Unix line endings for Clang/LLVM/MLIR projects (#161460) 2025-10-02 06:09:12 -07:00
.clang-format-ignore
.clang-tidy Add default empty header filter regex to root .clang-tidy (#167386) 2025-11-11 01:36:25 +03:00
.git-blame-ignore-revs [clang-tidy][NFC] Add clang-tidy formatting commit to .git-blame-ignore-revs (#167126) 2025-11-20 21:42:10 +08:00
.gitattributes [libclang/python] Enable packaging clang python bindings (#125806) 2025-11-24 17:21:24 -08:00
.gitignore [llvm][.gitignore] Add instructions.md to coding assistants section (#181211) 2026-02-12 19:51:42 +00:00
.mailmap Update my email across the project (#179361) 2026-02-04 09:07:53 -08:00
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE.TXT
pyproject.toml [lldb] Configure pyright to the documented minimum python version (#162952) 2025-11-20 10:30:22 -08:00
README.md
SECURITY.md [SECURITY.md] add pointers to "what is a security issue" (#177372) 2026-01-22 17:19:09 -07:00

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.