mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
ee178ad6c3
This new verifier rule lets us unambigously pick a calling convention when creating a new declaration for `@llvm.experimental.deoptimize.<ty>`. It is also congruent with our lowering strategy -- since all calls to `@llvm.experimental.deoptimize` are lowered to calls to `__llvm_deoptimize`, it is reasonable to enforce a unique calling convention. Some of the tests that were breaking this verifier rule have had to be split up into different .ll files. The inliner was violating this rule as well, and has been fixed to avoid producing invalid IR. llvm-svn: 269261
17 lines
532 B
LLVM
17 lines
532 B
LLVM
; RUN: opt -rewrite-statepoints-for-gc -S < %s | FileCheck %s
|
|
|
|
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-apple-macosx10.11.0"
|
|
|
|
declare cc42 double @llvm.experimental.deoptimize.f64(...)
|
|
|
|
define double @caller_3() gc "statepoint-example" {
|
|
; CHECK-LABELL @caller_3(
|
|
; CHECK: call cc42 token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint
|
|
; CHECK: unreachable
|
|
|
|
entry:
|
|
%val = call cc42 double(...) @llvm.experimental.deoptimize.f64() [ "deopt"() ]
|
|
ret double %val
|
|
}
|