]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - opencl/llvm.git/commit
GlobalOpt: Aliases don't have sections, don't copy them when replacing
authorReid Kleckner <reid@kleckner.net>
Thu, 13 Feb 2014 02:18:36 +0000 (02:18 +0000)
committerReid Kleckner <reid@kleckner.net>
Thu, 13 Feb 2014 02:18:36 +0000 (02:18 +0000)
commit2798b77586abff91dca088cd678dd9fc0c6da3cd
tree723aaae0a2a86446fa2420fbee9be6dceb405b3a
parent571417b8a33d6a728ec5ac5b03af2fb12a4e86d3
GlobalOpt: Aliases don't have sections, don't copy them when replacing

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201286 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/IPO/GlobalOpt.cpp
test/Transforms/GlobalOpt/alias-resolve.ll
test/Transforms/GlobalOpt/alias-used-section.ll [new file with mode: 0644]