9 Commits

Author SHA1 Message Date
Nikita Popov
20fa198687 [RewriteStatepointsForGC] Avoid branch on undef UB in tests (NFC) 2023-01-03 14:31:33 +01:00
Nikita Popov
f01a3a893c [RewriteStatepointsForGC] Convert some tests to opaque pointers (NFC) 2023-01-03 14:27:26 +01:00
Bjorn Pettersson
3528e63d89 [test] Remove duplicate RUN lines in Transform tests 2022-12-08 11:47:16 +01:00
Roman Lebedev
dcd5f6f2fd
[NFC] Port all RewriteStatepointsForGC tests to -passes= syntax 2022-12-07 22:22:08 +03:00
Nikita Popov
9f30afffaa [RS4GC] Restore DAG check line (NFC)
It's fishy that this is needed, but this is what the test did
previously. Should hopefully address buildbot failures.
2022-02-04 10:26:15 +01:00
Nikita Popov
c680eeab30 [IRBuilder][RS4GC] Require FunctionCallee when creating statepoint
This makes the statepoint methods in IRBuilder accept a
FunctionCallee, which carries both the callee and function type.
This is used to add the elementtype attribute to the statepoint call.

RS4GC requires an additional tweak to actually preserve that attribute
-- previously the attributes on the call were completely overwritten.

Differential Revision: https://reviews.llvm.org/D118886
2022-02-04 09:47:32 +01:00
Philip Reames
3d40c75189 [Statepoint] Switch RS4GC to using gc-live bundle form
Now that we have an operand based form for the GC arguments to a statepoint intrinsic, update RS4GC to use it and update tests to reflect. This is pretty straight forward. I nearly landed without review, but figured a second set of eyes didn't hurt.

Differential Revision: https://reviews.llvm.org/D81121
2020-06-04 15:49:11 -07:00
Philip Reames
587fa99cfd Default to generating statepoints with deopt and gc-transition bundles if needed
Continues from D80598.

The key point of the change is to default to using operand bundles instead of the inline length prefix argument lists for statepoint nodes. An important subtlety to note is that the presence of a bundle has semantic meaning, even if it is empty. As such, we need to make a somewhat deeper change to the interface than is first obvious.

Existing code treats statepoint deopt arguments and the deopt bundle operands differently during inlining. The former is ignored (resulting in caller state being dropped), the later is merged.

We can't preserve the old behaviour for calls with deopt fed to RS4GC and then inlining, but we can avoid the no-deopt case changing. At least in internal testing, that seem to be the important one. (I'd argue the "stop merging after RS4GC" behaviour for the former was always "unexpected", but that the behaviour for non-deopt calls actually make sense.)

Differential Revision: https://reviews.llvm.org/D80674
2020-05-28 10:14:23 -07:00
Philip Reames
bed6624ac4 Split a test file so that most of it can be autogened 2020-05-26 17:33:32 -07:00