mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-05 01:30:18 +00:00
This option has been disabled for a while, and it is going away so I can clean up the coalescer code. The tests that required physreg joining to be enabled were almost all of the form "tiny function with interference between arguments and return value". Such functions are usually inlined in the real world. The problem exposed by phys_subreg_coalesce-3.ll is real, but fairly rare. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157027 91177308-0d34-0410-b5e6-96231b3b80d8
22 lines
843 B
LLVM
22 lines
843 B
LLVM
; RUN: llc < %s -march=ppc32 -mcpu=g5 -mtriple=powerpc-apple-darwin10.0 | FileCheck %s
|
|
; ModuleID = 'nn.c'
|
|
target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f128:64:128"
|
|
target triple = "powerpc-apple-darwin11.0"
|
|
; Indirect calls must use R12 on Darwin (i.e., R12 must contain the address of
|
|
; the function being called; the mtctr is not required to use it).
|
|
|
|
@p = external global void (...)* ; <void (...)**> [#uses=1]
|
|
|
|
define void @foo() nounwind ssp {
|
|
entry:
|
|
; Better: mtctr r12
|
|
; CHECK: mr r12, [[REG:r[0-9]+]]
|
|
; CHECK: mtctr [[REG]]
|
|
%0 = load void (...)** @p, align 4 ; <void (...)*> [#uses=1]
|
|
call void (...)* %0() nounwind
|
|
br label %return
|
|
|
|
return: ; preds = %entry
|
|
ret void
|
|
}
|