[Sparc] Fix an assertion failure while lowering fcmp on long double.

This assertion is triggered because an integer constant is created with wrong
  type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189948 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Venkatraman Govindaraju 2013-09-04 15:15:20 +00:00
parent 6947f10ec4
commit bf34f34642
2 changed files with 21 additions and 1 deletions

View File

@ -1816,7 +1816,7 @@ SparcTargetLowering::LowerF128Compare(SDValue LHS, SDValue RHS,
return DAG.getNode(SPISD::CMPICC, DL, MVT::Glue, Result, RHS);
}
case SPCC::FCC_ULE: {
SDValue RHS = DAG.getTargetConstant(2, LHS.getValueType());
SDValue RHS = DAG.getTargetConstant(2, Result.getValueType());
SPCC = SPCC::ICC_NE;
return DAG.getNode(SPISD::CMPICC, DL, MVT::Glue, Result, RHS);
}

View File

@ -76,3 +76,23 @@ entry:
%ret = select i1 %cond, i32 %a, i32 %b
ret i32 %ret
}
; HARD-LABEL: f128_compare2
; HARD: fcmpq
; HARD: fb{{ule|g}}
; SOFT-LABEL: f128_compare2
; SOFT: _Q_cmp
; SOFT: cmp
define i32 @f128_compare2() {
entry:
%0 = fcmp ogt fp128 undef, 0xL00000000000000000000000000000000
br i1 %0, label %"5", label %"7"
"5": ; preds = %entry
ret i32 0
"7": ; preds = %entry
ret i32 1
}