Change SelectionDAG::getConstantPool to always set the alignment of the
authorDan Gohman <gohman@apple.com>
Tue, 16 Sep 2008 22:05:41 +0000 (22:05 +0000)
committerDan Gohman <gohman@apple.com>
Tue, 16 Sep 2008 22:05:41 +0000 (22:05 +0000)
commit50284d81f863a6576582e1a171a22eb0f012ddf3
tree49bc73869e78253a52772428bdb8e1e8bdc23d0c
parent056292fd738924f3f7703725d8f630983794b5a5
Change SelectionDAG::getConstantPool to always set the alignment of the
ConstantPoolSDNode, using the target's preferred alignment for the
constant type.

In LegalizeDAG, when performing loads from the constant pool, the
ConstantPoolSDNode's alignment is used in the calls to getLoad and
getExtLoad.

This change prevents SelectionDAG::getLoad/getExtLoad from incorrectly
choosing the ABI alignment for constant pool loads when Alignment == 0.
The incorrect alignment is only a performance issue when ABI alignment
does not equal preferred alignment (i.e., on x86 it was generating
MOVUPS instead of MOVAPS for v4f32 constant loads when the default ABI
alignment for 128bit vectors is forced to 1 byte.)

Patch by Paul Redmond!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56253 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp