llvm-project/llvm/lib/CodeGen/SelectionDAG
Rafael Espindola 24a669d225 Prevent alias from pointing to weak aliases.
This adds back r204781.

Original message:

Aliases are just another name for a position in a file. As such, the
regular symbol resolutions are not applied. For example, given

define void @my_func() {
  ret void
}
@my_alias = alias weak void ()* @my_func
@my_alias2 = alias void ()* @my_alias

We produce without this patch:

        .weak   my_alias
my_alias = my_func
        .globl  my_alias2
my_alias2 = my_alias

That is, in the resulting ELF file my_alias, my_func and my_alias are
just 3 names pointing to offset 0 of .text. That is *not* the
semantics of IR linking. For example, linking in a

@my_alias = alias void ()* @other_func

would require the strong my_alias to override the weak one and
my_alias2 would end up pointing to other_func.

There is no way to represent that with aliases being just another
name, so the best solution seems to be to just disallow it, converting
a miscompile into an error.

llvm-svn: 204934
2014-03-27 15:26:56 +00:00
..
CMakeLists.txt llvm/lib: [CMake] Add explicit dependency to intrinsics_gen. 2012-06-24 13:32:01 +00:00
DAGCombiner.cpp [DAG] Fix an assertion failure caused by an invalid cast in method 'BuildVectorSDNode::isConstantSplat' 2014-03-22 01:47:22 +00:00
FastISel.cpp Phase 2 of the great MachineRegisterInfo cleanup. This time, we're changing 2014-03-13 23:12:04 +00:00
FunctionLoweringInfo.cpp [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
InstrEmitter.cpp Make stackmap machineinstrs clobber the scratch regs too. 2014-03-05 07:08:16 +00:00
InstrEmitter.h Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
LLVMBuild.txt
LegalizeDAG.cpp SelectionDAG: Allow promotion of SELECT nodes from float to int types 2014-03-24 16:07:28 +00:00
LegalizeFloatTypes.cpp Keep TBAA info when rewriting SelectionDAG loads and stores 2013-10-28 11:17:59 +00:00
LegalizeIntegerTypes.cpp IR: add a second ordering operand to cmpxhg for failure 2014-03-11 10:48:52 +00:00
LegalizeTypes.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-08 06:31:39 +00:00
LegalizeTypes.h [AArch64 NEON] Fix pattern match failed on FP_ROUND from v1f128 to v1f64. 2014-01-26 02:19:35 +00:00
LegalizeTypesGeneric.cpp [C++11] Replace llvm::tie with std::tie. 2014-03-02 13:30:33 +00:00
LegalizeVectorOps.cpp [VectorLegalizer/X86] Don't unvectorize fp_to_uint for v8f32->v8i16 2014-03-17 17:06:14 +00:00
LegalizeVectorTypes.cpp Add support for scalarizing/splitting vector bswap. 2014-03-18 17:49:12 +00:00
Makefile
ResourcePriorityQueue.cpp [C++11] Replace llvm::next and llvm::prior with std::next and std::prev. 2014-03-02 12:27:27 +00:00
SDNodeDbgValue.h [Layering] Move DebugLoc.h into the IR library. The implementation 2014-03-05 10:30:38 +00:00
ScheduleDAGFast.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-08 06:31:39 +00:00
ScheduleDAGRRList.cpp Remove copy ctors that did the same thing as the default one. 2014-03-11 11:32:49 +00:00
ScheduleDAGSDNodes.cpp [C++11] Replace llvm::next and llvm::prior with std::next and std::prev. 2014-03-02 12:27:27 +00:00
ScheduleDAGSDNodes.h [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-08 06:31:39 +00:00
ScheduleDAGVLIW.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-08 06:31:39 +00:00
SelectionDAG.cpp Prevent alias from pointing to weak aliases. 2014-03-27 15:26:56 +00:00
SelectionDAGBuilder.cpp Add @llvm.clear_cache builtin 2014-03-26 12:52:28 +00:00
SelectionDAGBuilder.h Replace '#include ValueTypes.h' with forward declarations. 2014-03-12 08:00:24 +00:00
SelectionDAGDumper.cpp [Layering] Move DebugInfo.h into the IR library where its implementation 2014-03-06 00:46:21 +00:00
SelectionDAGISel.cpp Phase 1 of refactoring the MachineRegisterInfo iterators to make them suitable 2014-03-13 06:02:25 +00:00
SelectionDAGPrinter.cpp [Layering] Move DebugInfo.h into the IR library where its implementation 2014-03-06 00:46:21 +00:00
TargetLowering.cpp Fix creating illegal setcc cond codes. 2014-03-25 16:09:21 +00:00
TargetSelectionDAGInfo.cpp Rename some member variables from TD to DL. 2014-02-18 15:33:12 +00:00