mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
1dbe2693fc
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 llvm-svn: 216117
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
|
|
}
|