diff options
| author | Teresa Johnson <tejohnson@google.com> | 2016-08-11 14:58:12 +0000 |
|---|---|---|
| committer | Teresa Johnson <tejohnson@google.com> | 2016-08-11 14:58:12 +0000 |
| commit | 9ba95f99f3703fd06ce5912343526c2cc6ba353e (patch) | |
| tree | bf52a79d2f8cf0359e7a9e7a932e37772b8d6fe8 /llvm/test/LTO/Resolution/X86/Inputs/comdat.ll | |
| parent | 3818f1b38ae7b29dfeed0f11cff1a6b30fcc4f0e (diff) | |
| download | bcm5719-llvm-9ba95f99f3703fd06ce5912343526c2cc6ba353e.tar.gz bcm5719-llvm-9ba95f99f3703fd06ce5912343526c2cc6ba353e.zip | |
Restore "Resolution-based LTO API."
This restores commit r278330, with fixes for a few bot failures:
- Fix a late change I had made to the save temps output file that I
missed due to existing files sitting on my disk
- Fix a bunch of Windows bot failures with "ambiguous call to overloaded
function" due to confusion between llvm::make_unique vs
std::make_unique (preface the new make_unique calls with "llvm::")
- Attempt to fix a modules bot failure by adding a missing include
to LTO/Config.h.
Original change:
Resolution-based LTO API.
Summary:
This introduces a resolution-based LTO API. The main advantage of this API over
existing APIs is that it allows the linker to supply a resolution for each
symbol in each object, rather than the combined object as a whole. This will
become increasingly important for use cases such as ThinLTO which require us
to process symbol resolutions in a more complicated way than just adjusting
linkage.
Patch by Peter Collingbourne.
Reviewers: rafael, tejohnson, mehdi_amini
Subscribers: lhames, tejohnson, mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D20268
llvm-svn: 278338
Diffstat (limited to 'llvm/test/LTO/Resolution/X86/Inputs/comdat.ll')
| -rw-r--r-- | llvm/test/LTO/Resolution/X86/Inputs/comdat.ll | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/LTO/Resolution/X86/Inputs/comdat.ll b/llvm/test/LTO/Resolution/X86/Inputs/comdat.ll new file mode 100644 index 00000000000..ca4bbb4bf81 --- /dev/null +++ b/llvm/test/LTO/Resolution/X86/Inputs/comdat.ll @@ -0,0 +1,28 @@ +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +$c2 = comdat any +$c1 = comdat any + +; This is only present in this file. The linker will keep $c1 from the first +; file and this will be undefined. +@will_be_undefined = global i32 1, comdat($c1) + +@v1 = weak_odr global i32 41, comdat($c2) +define weak_odr protected i32 @f1(i8* %this) comdat($c2) { +bb20: + store i8* %this, i8** null + br label %bb21 +bb21: + ret i32 41 +} + +@r21 = global i32* @v1 +@r22 = global i32(i8*)* @f1 + +@a21 = alias i32, i32* @v1 +@a22 = alias i16, bitcast (i32* @v1 to i16*) + +@a23 = alias i32(i8*), i32(i8*)* @f1 +@a24 = alias i16, bitcast (i32(i8*)* @f1 to i16*) +@a25 = alias i16, i16* @a24 |

