mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
58743bfc1b
I'm not sure if it's worth it or not to add a hook to disable the pass for an arbitrary function. This pass is taking up to 5% of compile time in tiny programs by iterating through all of the physical registers in every register class. This pass should be rewritten in terms of regunits. For now, skip doing anything for entry point functions. The vast majority of functions in the real world aren't callable, so just not running this will give the majority of the benefit. llvm-svn: 365255
23 lines
795 B
LLVM
23 lines
795 B
LLVM
; RUN: llc -enable-ipra -print-regusage -o /dev/null 2>&1 < %s | FileCheck %s
|
|
|
|
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-apple-macosx10.12.0"
|
|
|
|
; Verify that bar does not clobber anything
|
|
; CHECK-NOT: bar Clobbered Registers:{{.+}}
|
|
; CHECK: bar Clobbered Registers:
|
|
define void @bar() #0 {
|
|
ret void
|
|
}
|
|
|
|
; Verifies that inline assembly is correctly handled by giving a list of clobbered registers
|
|
; CHECK: foo Clobbered Registers: $ah $al $ax $ch $cl $cx $di $dih $dil $eax $ecx $edi $hax $hcx $hdi $rax $rcx $rdi
|
|
define void @foo() #0 {
|
|
call void asm sideeffect "", "~{eax},~{ecx},~{edi}"() #0
|
|
ret void
|
|
}
|
|
|
|
@llvm.used = appending global [2 x i8*] [i8* bitcast (void ()* @foo to i8*), i8* bitcast (void ()* @bar to i8*)]
|
|
|
|
attributes #0 = { nounwind }
|