1*05a7b22aSJianjian Guan; RUN: opt < %s -mtriple=riscv64-unknown-linux-gnu -S -passes=inline | FileCheck %s 2*05a7b22aSJianjian Guan; RUN: opt < %s -mtriple=riscv64-unknown-linux-gnu -S -passes='cgscc(inline)' | FileCheck %s 3*05a7b22aSJianjian Guan; Check that we only inline when we have compatible target attributes. 4*05a7b22aSJianjian Guan 5*05a7b22aSJianjian Guantarget datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128" 6*05a7b22aSJianjian Guantarget triple = "riscv64-unknown-linux-gnu" 7*05a7b22aSJianjian Guan 8*05a7b22aSJianjian Guandefine i32 @foo() #0 { 9*05a7b22aSJianjian Guanentry: 10*05a7b22aSJianjian Guan %call = call i32 (...) @baz() 11*05a7b22aSJianjian Guan ret i32 %call 12*05a7b22aSJianjian Guan; CHECK-LABEL: foo 13*05a7b22aSJianjian Guan; CHECK: call i32 (...) @baz() 14*05a7b22aSJianjian Guan} 15*05a7b22aSJianjian Guandeclare i32 @baz(...) #0 16*05a7b22aSJianjian Guan 17*05a7b22aSJianjian Guandefine i32 @bar() #1 { 18*05a7b22aSJianjian Guanentry: 19*05a7b22aSJianjian Guan %call = call i32 @foo() 20*05a7b22aSJianjian Guan ret i32 %call 21*05a7b22aSJianjian Guan; CHECK-LABEL: bar 22*05a7b22aSJianjian Guan; CHECK: call i32 (...) @baz() 23*05a7b22aSJianjian Guan} 24*05a7b22aSJianjian Guan 25*05a7b22aSJianjian Guandefine i32 @qux() #0 { 26*05a7b22aSJianjian Guanentry: 27*05a7b22aSJianjian Guan %call = call i32 @bar() 28*05a7b22aSJianjian Guan ret i32 %call 29*05a7b22aSJianjian Guan; CHECK-LABEL: qux 30*05a7b22aSJianjian Guan; CHECK: call i32 @bar() 31*05a7b22aSJianjian Guan} 32*05a7b22aSJianjian Guan 33*05a7b22aSJianjian Guanattributes #0 = { "target-cpu"="generic-rv64" "target-features"="+f,+d" } 34*05a7b22aSJianjian Guanattributes #1 = { "target-cpu"="generic-rv64" "target-features"="+f,+d,+m,+v" } 35