-
Notifications
You must be signed in to change notification settings - Fork 10.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[lld] A Unified LTO Bitcode Frontend
The unified LTO pipeline creates a single LTO bitcode structure that can be used by Thin or Full LTO. This means that the LTO mode can be chosen at link time and that all LTO bitcode produced by the pipeline is compatible, from an optimization perspective. This makes the behavior of LTO a bit more predictable by normalizing the set of LTO features supported by each LTO bitcode file. Example usage: clang -flto -funified-lto -fuse-ld=lld foo.c clang -flto=thin -funified-lto -fuse-ld=lld foo.c clang -c -flto -funified-lto foo.c # -flto={full,thin} are identical in terms of compilation actions clang -flto=thin -fuse-ld=lld foo.o # pass --lto=thin to ld.lld clang -c -flto -funified-lto foo.c clang -flto -fuse-ld=lld foo.o The RFC discussing the details and rational for this change is here: https://discourse.llvm.org/t/rfc-a-unified-lto-bitcode-frontend/61774 Differential Revision: https://reviews.llvm.org/D123805
- Loading branch information
Showing
5 changed files
with
64 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
; REQUIRES: x86 | ||
; RUN: opt -thinlto-bc -thinlto-split-lto-unit -unified-lto %s -o %t0.o | ||
; RUN: opt -thinlto-bc -thinlto-split-lto-unit %s -o %t1.o | ||
; RUN: ld.lld --lto=full %t0.o -o %t0 | ||
; RUN: llvm-readelf -s %t0 | FileCheck %s --check-prefix=FULL | ||
; RUN: ld.lld --lto=thin %t0.o -o %t0 | ||
; RUN: llvm-readelf -s %t0 | FileCheck %s --check-prefix=THIN | ||
; RUN: ld.lld --lto=default %t0.o -o %t0 | ||
; RUN: llvm-readelf -s %t0 | FileCheck %s --check-prefix=THIN | ||
; RUN: ld.lld --lto=default %t1.o -o %t1 | ||
; RUN: llvm-readelf -s %t1 | FileCheck %s --check-prefix=THIN | ||
; RUN: ld.lld %t0.o -o %t0 2>&1 | count 0 | ||
; RUN: llvm-readelf -s %t0 | FileCheck %s --check-prefix=THIN | ||
; RUN: not ld.lld --lto=unknown %t1.o -o /dev/null 2>&1 | \ | ||
; RUN: FileCheck --implicit-check-not=error: --check-prefix=ERR %s | ||
; ERR: error: unknown LTO mode: unknown | ||
|
||
; FULL: Symbol table '.symtab' contains 3 entries: | ||
; FULL-NEXT: Num: Value Size Type Bind Vis Ndx Name | ||
; FULL-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND | ||
; FULL-NEXT: 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS ld-temp.o | ||
; FULL-NEXT: 2: 0000000000201120 1 FUNC GLOBAL DEFAULT 1 _start | ||
|
||
; THIN: Symbol table '.symtab' contains 3 entries: | ||
; THIN-NEXT: Num: Value Size Type Bind Vis Ndx Name | ||
; THIN-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND | ||
; THIN-NEXT: 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS unified-lto.ll | ||
; THIN-NEXT: 2: 0000000000201120 1 FUNC GLOBAL DEFAULT 1 _start | ||
|
||
target triple = "x86_64-unknown-linux-gnu" | ||
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | ||
|
||
define void @_start() { | ||
ret void | ||
} |