mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-24 21:42:54 +02:00
5f7f123920
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 llvm-svn: 281538
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
|