[PATCH] D22900: Revert r244207 - Mark calls in thunk functions as tail-call optimization

Reid Kleckner via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 1 12:55:56 PDT 2016


rnk added a comment.

So, if clang were to use a temporary alloca for the byval parameter, then yes, I agree marking it as a tail call would be incorrect. However, clang doesn't use an alloca, it forwards the byval pointer parameter directly to the callee:

  define i32 @_ZThn4_N1C4SeekE6_LARGE(%class.C* nocapture readnone %this, %union._LARGE* byval nocapture readonly align 4 %L) unnamed_addr #0 align 2 {
  entry:
    %call = tail call i32 @_ZN1C4SeekE6_LARGE(%class.C* undef, %union._LARGE* byval nonnull align 4 %L)
    ret i32 %call
  }

Maybe the test case is over-reduced, or the problematic IR was produced by an older version of clang?


https://reviews.llvm.org/D22900





More information about the cfe-commits mailing list