Summary: Regular LTO modules do not need LTO Unit splitting, only ThinLTO does (they must be consistently split into regular and Thin units for optimizations such as whole program devirtualization and lower type tests). In order to avoid spurious errors from LTO when combining with split ThinLTO modules, always set this flag for regular LTO modules. Reviewers: pcc Subscribers: mehdi_amini, Prazek, inglorion, steven_wu, dexonsmith, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D65009 llvm-svn: 366623
13 lines
693 B
C
13 lines
693 B
C
// ; Check that -flto=thin without -fsplit-lto-unit has EnableSplitLTOUnit = 0
|
|
// RUN: %clang_cc1 -flto=thin -emit-llvm-bc < %s | llvm-dis -o - | FileCheck %s
|
|
// CHECK: !{i32 1, !"EnableSplitLTOUnit", i32 0}
|
|
//
|
|
// ; Check that -flto=thin with -fsplit-lto-unit has EnableSplitLTOUnit = 1
|
|
// RUN: %clang_cc1 -flto=thin -fsplit-lto-unit -emit-llvm-bc < %s | llvm-dis -o - | FileCheck %s --check-prefix=SPLIT
|
|
// SPLIT: !{i32 1, !"EnableSplitLTOUnit", i32 1}
|
|
//
|
|
// ; Check that regular LTO has EnableSplitLTOUnit = 1
|
|
// RUN: %clang_cc1 -flto -triple x86_64-pc-linux-gnu -emit-llvm-bc < %s | llvm-dis -o - | FileCheck %s --implicit-check-not="EnableSplitLTOUnit" --check-prefix=SPLIT
|
|
|
|
int main() {}
|