1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00
llvm-mirror/lib/CodeGen/SelectionDAG
Chandler Carruth aea541125e Fix the root cause of PR15348 by correctly handling alignment 0 on
memory intrinsics in the SDAG builder.

When alignment is zero, the lang ref says that *no* alignment
assumptions can be made. This is the exact opposite of the internal API
contracts of the DAG where alignment 0 indicates that the alignment can
be made to be anything desired.

There is another, more explicit alignment that is better suited for the
role of "no alignment at all": an alignment of 1. Map the intrinsic
alignment to this early so that we don't end up generating aligned DAGs.

It is really terrifying that we've never seen this before, but we
suddenly started generating a large number of alignment 0 memcpys due to
the new code to do memcpy-based copying of POD class members. That patch
contains a bug that rounds bitfield alignments down when they are the
first field. This can in turn produce zero alignments.

This fixes weird crashes I've seen in library users of LLVM on 32-bit
hosts, etc.

llvm-svn: 176022
2013-02-25 14:20:21 +00:00
..
CMakeLists.txt
DAGCombiner.cpp DAGCombiner: Make the post-legalize vector op optimization more aggressive. 2013-02-21 15:24:35 +00:00
FastISel.cpp Fix isa<> check which could never be true. 2013-02-22 01:50:38 +00:00
FunctionLoweringInfo.cpp Revert 172027 and 174336. Remove diagnostics about over-aligned stack objects. 2013-02-08 20:35:15 +00:00
InstrEmitter.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
InstrEmitter.h Use MachineInstrBuilder in InstrEmitter. 2012-12-20 18:08:09 +00:00
LegalizeDAG.cpp Move the SplatByte helper to APInt and generalize it a bit. 2013-02-20 13:00:06 +00:00
LegalizeFloatTypes.cpp Make APFloat constructor require explicit semantics. 2013-01-22 09:46:31 +00:00
LegalizeIntegerTypes.cpp Legalizer: Reword comment again, per Duncan's suggestion. 2013-01-27 21:02:52 +00:00
LegalizeTypes.cpp Refactor to expose RTLIB calls to targets. 2013-01-09 13:18:15 +00:00
LegalizeTypes.h This patch aims to reduce compile time in LegalizeTypes by using SmallDenseMap, 2013-01-25 15:18:54 +00:00
LegalizeTypesGeneric.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
LegalizeVectorOps.cpp SelectionDAG compile time improvement. 2013-02-22 23:33:30 +00:00
LegalizeVectorTypes.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
LLVMBuild.txt
Makefile
ResourcePriorityQueue.cpp Change TargetLowering::getRegClassFor to take an MVT, instead of EVT. 2012-12-13 06:34:11 +00:00
ScheduleDAGFast.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
ScheduleDAGRRList.cpp Add a special handling case for untyped CopyFromReg node in GetCostForDef() of ScheduleDAGRRList 2013-01-29 21:18:43 +00:00
ScheduleDAGSDNodes.cpp Change TargetLowering::getRepRegClassFor to take an MVT, instead of 2012-12-13 18:45:35 +00:00
ScheduleDAGSDNodes.h Fix #includes, so we include only what we really need. 2013-02-20 00:26:25 +00:00
ScheduleDAGVLIW.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
SDNodeDbgValue.h Sort includes for all of the .h files under the 'lib' tree. These were 2012-12-04 07:12:27 +00:00
SDNodeOrdering.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-18 02:01:41 +00:00
SelectionDAG.cpp Fix the root cause of PR15348 by correctly handling alignment 0 on 2013-02-25 14:20:21 +00:00
SelectionDAGBuilder.cpp Fix the root cause of PR15348 by correctly handling alignment 0 on 2013-02-25 14:20:21 +00:00
SelectionDAGBuilder.h Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
SelectionDAGDumper.cpp Teach SDISel to combine fsin / fcos into a fsincos node if the following 2013-01-29 02:32:37 +00:00
SelectionDAGISel.cpp [ms-inline asm] Remove a redundant call to the setHasMSInlineAsm function. 2013-02-18 20:13:59 +00:00
SelectionDAGPrinter.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
TargetLowering.cpp Add static cast to unsigned char whenever a character classification function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration. 2013-02-12 21:21:59 +00:00
TargetSelectionDAGInfo.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00