llvm-project/llvm/test/Transforms/Coroutines
Gor Nishanov d4712715dd [coroutines] Respect alloca alignment requirements when building coroutine frame
Summary:
If an alloca need to be stored in the coroutine frame and it has an alignment specified and the alignment does not match the natural alignment of the alloca type. Insert appropriate padding into the coroutine frame to make sure that it gets requested alignment.

For example for a packet type (which natural alignment is 1), but alloca alignment is 8, we may need to insert a padding field with required number of bytes to make sure it is properly aligned.

```
%PackedStruct = type <{ i64 }>
...
  %data = alloca %PackedStruct, align 8
```

If the previous field in the coroutine frame had alignment 2, we would have [6 x i8] inserted before %PackedStruct in the coroutine frame:

```
%f.Frame = type { ..., i16, [6 x i8], %PackedStruct }
```

Reviewers: rnk, lewissbaker, modocache

Reviewed By: modocache

Subscribers: EricWF, llvm-commits

Differential Revision: https://reviews.llvm.org/D45221

llvm-svn: 329112
2018-04-03 20:54:20 +00:00
..
ArgAddr.ll
coro-catchswitch.ll
coro-cleanup.ll
coro-debug.ll Cloning: Fix debug info cloning 2017-05-27 19:41:09 +00:00
coro-early.ll [coroutines] Add support for llvm.coro.noop intrinsics 2018-04-02 16:55:12 +00:00
coro-eh-aware-edge-split.ll
coro-elide.ll
coro-frame.ll [coroutines] Relocate instructions that maybe spilled after coro.begin 2017-05-25 00:46:20 +00:00
coro-heap-elide.ll
coro-materialize.ll [coroutines] Allow rematerialization upto 4 times. Remove incorrect assert 2017-05-24 23:01:02 +00:00
coro-padding.ll [coroutines] Respect alloca alignment requirements when building coroutine frame 2018-04-03 20:54:20 +00:00
coro-spill-after-phi.ll
coro-spill-corobegin.ll [coroutines] CoroBegin from inner coroutines should be considered for spills 2017-08-23 14:47:52 +00:00
coro-split-00.ll
coro-split-01.ll
coro-split-02.ll [coroutines] PR33271: Remove stray coro.save intrinsics during CoroSplit 2017-06-02 02:18:36 +00:00
coro-split-alloc.ll [Coroutines] Don't move stores for allocator args 2018-02-15 19:31:45 +00:00
coro-split-dbg.ll Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
coro-split-eh.ll
coro-split-hidden.ll [Coroutines] Avoid assert splitting hidden coros 2018-04-02 23:39:40 +00:00
coro-split-musttail.ll [coroutines] Add support for symmetric control transfer (musttail on coro.resumes followed by a suspend) 2017-08-25 02:25:10 +00:00
ex0.ll
ex1.ll
ex2.ll
ex3.ll
ex4.ll
ex5.ll
no-suspend.ll
phi-coro-end.ll
restart-trigger.ll
smoketest.ll