mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-15 17:07:52 +00:00
bdf517a05c
Previously the prevailing information was not honored, and commons symbols could override a strong definition. This patch fixes it and propose the following semantic for commons: the client should mark as prevailing the commons that it expects the LTO implementation to merge (i.e. take the maximum size and alignment). It implies that commons are allowed to have multiple prevailing definitions. Differential Revision: https://reviews.llvm.org/D24545 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281538 91177308-0d34-0410-b5e6-96231b3b80d8
13 lines
440 B
LLVM
13 lines
440 B
LLVM
; RUN: llvm-as -o %t1.bc %s
|
|
; RUN: llvm-as -o %t2.bc %p/Inputs/commons.ll
|
|
; RUN: llvm-lto2 %t1.bc -r=%t1.bc,x,l %t2.bc -r=%t2.bc,x,pl -o %t.out -save-temps
|
|
; RUN: llvm-dis -o - %t.out.0.0.preopt.bc | FileCheck %s
|
|
|
|
; A strong definition should override the common
|
|
; CHECK: @x = global i32 42, align 4
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
@x = common global i16 0, align 2
|