mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 06:00:28 +00:00
4b1cddbaf0
Summary: This fixes http://llvm.org/bugs/show_bug.cgi?id=19530. The problem is that X86ISelLowering erroneously thought the third call was eligible for tail call elimination. It would have been if it's return value was actually the one returned by the calling function, but here that is not the case and additional values are being returned. Test Plan: Test case from the original bug report is included. Reviewers: rafael Reviewed By: rafael Subscribers: rafael, llvm-commits Differential Revision: http://reviews.llvm.org/D4968 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216117 91177308-0d34-0410-b5e6-96231b3b80d8
17 lines
715 B
LLVM
17 lines
715 B
LLVM
; RUN: llc < %s -mtriple=x86_64-linux-gnu -mcpu=core2 | FileCheck %s
|
|
; See PR19530
|
|
declare double @llvm.powi.f64(double %Val, i32 %power)
|
|
define <3 x double> @julia_foo17589(i32 %arg) {
|
|
%tmp1 = call double @llvm.powi.f64(double 1.000000e+00, i32 %arg)
|
|
; CHECK: callq __powidf2
|
|
%tmp2 = insertelement <3 x double> undef, double %tmp1, i32 0
|
|
%tmp3 = call double @llvm.powi.f64(double 2.000000e+00, i32 %arg)
|
|
; CHECK: callq __powidf2
|
|
%tmp4 = insertelement <3 x double> %tmp2, double %tmp3, i32 1
|
|
%tmp5 = call double @llvm.powi.f64(double 3.000000e+00, i32 %arg)
|
|
; CHECK: callq __powidf2
|
|
%tmp6 = insertelement <3 x double> %tmp4, double %tmp5, i32 2
|
|
; CHECK-NOT: TAILCALL
|
|
ret <3 x double> %tmp6
|
|
}
|