llvm-6502/lib/Transforms
Peter Collingbourne 4a6d99b0a9 Internalize: internalize comdat members as a group, and drop comdat on such members.
Internalizing an individual comdat group member without also internalizing
the other members of the comdat can break comdat semantics. For example,
if a module contains a reference to an internalized comdat member, and the
linker chooses a comdat group from a different object file, this will break
the reference to the internalized member.

This change causes the internalizer to only internalize comdat members if all
other members of the comdat are not externally visible. Once a comdat group
has been fully internalized, there is no need to apply comdat rules to its
members; later optimization passes (e.g. globaldce) can legally drop individual
members of the comdat. So we drop the comdat attribute from all comdat members.

Differential Revision: http://reviews.llvm.org/D10679

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242423 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-16 17:42:21 +00:00
..
Hello Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
InstCombine [InstCombine] Generalize sub of selects optimization to all BinaryOperators 2015-07-14 22:39:23 +00:00
Instrumentation Revert the new EH instructions 2015-07-10 07:15:17 +00:00
IPO Internalize: internalize comdat members as a group, and drop comdat on such members. 2015-07-16 17:42:21 +00:00
ObjCARC Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Scalar Create a wrapper pass for BranchProbabilityInfo. 2015-07-15 22:48:29 +00:00
Utils [LAA] Lift RuntimePointerCheck out of LoopAccessInfo, NFC 2015-07-14 22:32:44 +00:00
Vectorize Create a wrapper pass for BlockFrequencyInfo. 2015-07-14 23:40:50 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile