[llvm] r233482 - [DAGCombiner] Fixed incorrect test for buildvector of constant integers.
Simon Pilgrim
llvm-dev at redking.me.uk
Fri Apr 3 08:18:26 PDT 2015
Justin,
Sorry for the delay - the tests were added in rL234015
Simon.
> On 31 Mar 2015, at 01:14, Justin Bogner <mail at justinbogner.com> wrote:
>
> Simon Pilgrim <llvm-dev at redking.me.uk> writes:
>> Author: rksimon
>> Date: Sat Mar 28 13:31:31 2015
>> New Revision: 233482
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=233482&view=rev
>> Log:
>> [DAGCombiner] Fixed incorrect test for buildvector of constant integers.
>>
>> DAGCombiner::ReassociateOps was correctly testing for an constant
>> integer scalar but failed to correctly test for constant integer
>> vectors (it was testing for any constant vector).
>
> Test case?
>
>> Modified:
>> llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=233482&r1=233481&r2=233482&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Sat Mar 28 13:31:31 2015
>> @@ -705,16 +705,8 @@ static bool isConstantSplatVector(SDNode
>> EltVT.getSizeInBits() >= SplatBitSize);
>> }
>>
>> -// \brief Returns the SDNode if it is a constant BuildVector or constant.
>> -static SDNode *isConstantBuildVectorOrConstantInt(SDValue N) {
>> - if (isa<ConstantSDNode>(N))
>> - return N.getNode();
>> - BuildVectorSDNode *BV = dyn_cast<BuildVectorSDNode>(N);
>> - if (BV && BV->isConstant())
>> - return BV;
>> - return nullptr;
>> -}
>> -
>> +// \brief Returns the SDNode if it is a constant integer BuildVector
>> +// or constant integer.
>> static SDNode *isConstantIntBuildVectorOrConstantInt(SDValue N) {
>> if (isa<ConstantSDNode>(N))
>> return N.getNode();
>> @@ -723,6 +715,8 @@ static SDNode *isConstantIntBuildVectorO
>> return nullptr;
>> }
>>
>> +// \brief Returns the SDNode if it is a constant float BuildVector
>> +// or constant float.
>> static SDNode *isConstantFPBuildVectorOrConstantFP(SDValue N) {
>> if (isa<ConstantFPSDNode>(N))
>> return N.getNode();
>> @@ -773,8 +767,8 @@ SDValue DAGCombiner::ReassociateOps(unsi
>> SDValue N0, SDValue N1) {
>> EVT VT = N0.getValueType();
>> if (N0.getOpcode() == Opc) {
>> - if (SDNode *L = isConstantBuildVectorOrConstantInt(N0.getOperand(1))) {
>> - if (SDNode *R = isConstantBuildVectorOrConstantInt(N1)) {
>> + if (SDNode *L = isConstantIntBuildVectorOrConstantInt(N0.getOperand(1))) {
>> + if (SDNode *R = isConstantIntBuildVectorOrConstantInt(N1)) {
>> // reassoc. (op (op x, c1), c2) -> (op x, (op c1, c2))
>> if (SDValue OpNode = DAG.FoldConstantArithmetic(Opc, VT, L, R))
>> return DAG.getNode(Opc, DL, VT, N0.getOperand(0), OpNode);
>> @@ -793,8 +787,8 @@ SDValue DAGCombiner::ReassociateOps(unsi
>> }
>>
>> if (N1.getOpcode() == Opc) {
>> - if (SDNode *R = isConstantBuildVectorOrConstantInt(N1.getOperand(1))) {
>> - if (SDNode *L = isConstantBuildVectorOrConstantInt(N0)) {
>> + if (SDNode *R = isConstantIntBuildVectorOrConstantInt(N1.getOperand(1))) {
>> + if (SDNode *L = isConstantIntBuildVectorOrConstantInt(N0)) {
>> // reassoc. (op c2, (op x, c1)) -> (op x, (op c1, c2))
>> if (SDValue OpNode = DAG.FoldConstantArithmetic(Opc, VT, R, L))
>> return DAG.getNode(Opc, DL, VT, N1.getOperand(0), OpNode);
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150403/c8111419/attachment.html>
More information about the llvm-commits
mailing list