inline-musttail-varargs.ll 736 B

12345678910111213141516171819202122
  1. ; RUN: opt < %s -inline -instcombine -S | FileCheck %s
  2. ; We can't inline this thunk yet, but one day we will be able to. And when we
  3. ; do, this test case will be ready.
  4. declare void @ext_method(i8*, i32)
  5. define linkonce_odr void @thunk(i8* %this, ...) {
  6. %this_adj = getelementptr i8, i8* %this, i32 4
  7. musttail call void (i8*, ...) bitcast (void (i8*, i32)* @ext_method to void (i8*, ...)*)(i8* %this_adj, ...)
  8. ret void
  9. }
  10. define void @thunk_caller(i8* %p) {
  11. call void (i8*, ...) @thunk(i8* %p, i32 42)
  12. ret void
  13. }
  14. ; CHECK-LABEL: define void @thunk_caller(i8* %p)
  15. ; CHECK: call void (i8*, ...) @thunk(i8* %p, i32 42)
  16. ; FIXME: Inline the thunk. This should be significantly easier than inlining
  17. ; general varargs functions.