As defined in LangRef, aliases do not have sections. However, LLVM's
GlobalAlias class inherits from GlobalValue, which means we can read and
set its section. We should probably ban that as a separate change,
since it doesn't make much sense for an alias to have a section that
differs from its aliasee.
Fixes PR18757, where the section was being lost on the global in code
from Clang like:
extern "C" {
__attribute__((used, section("CUSTOM"))) static int in_custom_section;
}
Reviewers: rafael.espindola
Differential Revision: http://llvm-reviews.chandlerc.com/D2758
llvm-svn: 201286
9 lines
376 B
LLVM
9 lines
376 B
LLVM
; RUN: opt -S -globalopt < %s | FileCheck %s
|
|
|
|
@_Z17in_custom_section = internal global i8 42, section "CUSTOM"
|
|
@in_custom_section = protected dllexport alias internal i8* @_Z17in_custom_section
|
|
|
|
; CHECK: @in_custom_section = internal protected dllexport global i8 42, section "CUSTOM"
|
|
|
|
@llvm.used = appending global [1 x i8*] [i8* @in_custom_section], section "llvm.metadata"
|