mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	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
 | |
| }
 |