Add 'notail' marker for call instructions.

This marker prevents optimization passes from adding 'tail' or
'musttail' markers to a call. Is is used to prevent tail call
optimization from being performed on the call.

rdar://problem/22667622

Differential Revision: http://reviews.llvm.org/D12923


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252368 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Akira Hatanaka
2015-11-06 23:55:38 +00:00
parent 6bd362c2d9
commit c35973bfb0
11 changed files with 56 additions and 6 deletions
+7
View File
@@ -1144,6 +1144,13 @@ define void @instructions.call_musttail(i8* inalloca %val) {
ret void
}
define void @instructions.call_notail() {
notail call void @f1()
; CHECK: notail call void @f1()
ret void
}
define void @instructions.landingpad() personality i32 -2 {
invoke void @llvm.donothing() to label %proceed unwind label %catch1
invoke void @llvm.donothing() to label %proceed unwind label %catch2