Matthew Voss a1ca3af31e [llvm] A Unified LTO Bitcode Frontend
Here's a high level summary of the changes in this patch. For more
information on rational, see the RFC.
(https://discourse.llvm.org/t/rfc-a-unified-lto-bitcode-frontend/61774).

  - Add config parameter to LTO backend, specifying which LTO mode is
    desired when using unified LTO.
  - Add unified LTO flag to the summary index for efficiency. Unified
    LTO modules can be detected without parsing the module.
  - Make sure that the ModuleID is generated by incorporating more types
    of symbols.

Differential Revision: https://reviews.llvm.org/D123803
2023-07-05 14:53:14 -07:00

25 lines
689 B
LLVM

; Generate bitcode files with split LTO modules
; RUN: opt -unified-lto -thinlto-bc -thinlto-split-lto-unit -o %t0.bc %s
; RUN: llvm-dis -o %t3.ll %t0.bc
; RUN: FileCheck <%t3.ll.0 --check-prefix=M0 %s
; RUN: FileCheck <%t3.ll.1 --check-prefix=M1 %s
; RUN: llvm-bcanalyzer -dump %t0.bc | FileCheck --check-prefix=BCA0 %s
; ERROR: llvm-modextract: error: module index out of range; bitcode file contains 1 module(s)
; BCA0: <GLOBALVAL_SUMMARY_BLOCK
; BCA0: <FULL_LTO_GLOBALVAL_SUMMARY_BLOCK
; 16 = not eligible to import
$g = comdat any
@g = global i8 42, comdat, !type !0
; M0: define ptr @f()
define ptr @f() {
ret ptr @g
}
; M1: !0 = !{i32 0, !"typeid"}
!0 = !{i32 0, !"typeid"}