Skip to content
  1. Mar 26, 2017
    • Rui Ueyama's avatar
      Inline a small lambda. · dfd204fa
      Rui Ueyama authored
      llvm-svn: 298787
      dfd204fa
    • Rui Ueyama's avatar
      Rename C -> Sec and RI -> Rel. · 2f274230
      Rui Ueyama authored
      C is short for Chunk, but we are no longer using that term.
      RI is probably short for relocation iterator, but this is not an interator.
      
      llvm-svn: 298786
      2f274230
    • Rui Ueyama's avatar
      Simplify relocation offset adjustment. · 08aede36
      Rui Ueyama authored
      Previously, relocation offsets are recalculated for .eh_frame sections
      inside the main loop, and that messed up the main loop. This patch
      separates that logic into a dedicated class.
      
      llvm-svn: 298785
      08aede36
    • Gor Nishanov's avatar
      [coroutines] Add codegen for await and yield expressions · 5eb58583
      Gor Nishanov authored
      Details:
      
      Emit suspend expression which roughly looks like:
      
      auto && x = CommonExpr();
      if (!x.await_ready()) {
         llvm_coro_save();
         x.await_suspend(...);     (*)
         llvm_coro_suspend(); (**)
      }
      x.await_resume();
      where the result of the entire expression is the result of x.await_resume()
      
      (*) If x.await_suspend return type is bool, it allows to veto a suspend:
      if (x.await_suspend(...))
         llvm_coro_suspend();
      (**) llvm_coro_suspend() encodes three possible continuations as a switch instruction:
      
      %where-to = call i8 @llvm.coro.suspend(...)
      switch i8 %where-to, label %coro.ret [ ; jump to epilogue to suspend
        i8 0, label %yield.ready   ; go here when resumed
        i8 1, label %yield.cleanup ; go here when destroyed
      ]
      
      llvm-svn: 298784
      5eb58583
  2. Mar 25, 2017
Loading