diff options
author | Geoffrey Mainland <mainland@apeiron.net> | 2016-01-28 09:58:37 -0500 |
---|---|---|
committer | Geoffrey Mainland <mainland@apeiron.net> | 2016-01-31 13:01:31 -0500 |
commit | 6544f8de1ed575378f14b82a2eaa06cab58b2d65 (patch) | |
tree | a7cdcff80641feeff8ef4f0b1e02e04f9187dcd4 /rts/AutoApply.h | |
parent | 90f688e892427b1894b6aacb1f8de8d2e41ecb56 (diff) | |
download | haskell-6544f8de1ed575378f14b82a2eaa06cab58b2d65.tar.gz |
Properly track live registers when saving the CCCS.
Summary:
When saving the CCCS, we now correctly track the set of live registers and pass
them to the jump_SAVE_CCCS macro. This is now a variadic macro, but variadic
macros are supported by GCC since 3.0 and by all versions of clang, so this
should not be a problem.
Test Plan:
./validate with the following build options:
```
BuildFlavour = quick-llvm
SRC_HC_OPTS_STAGE1 = -fllvm-fill-undef-with-garbage
```
Reviewers: bgamari, simonmar, austin, rwbarton, simonpj
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1864
GHC Trac Issues: #11487
Diffstat (limited to 'rts/AutoApply.h')
-rw-r--r-- | rts/AutoApply.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/rts/AutoApply.h b/rts/AutoApply.h index 7c8af93942..4e441ca18b 100644 --- a/rts/AutoApply.h +++ b/rts/AutoApply.h @@ -90,13 +90,13 @@ // Jump to target, saving CCCS and restoring it on return #if defined(PROFILING) -#define jump_SAVE_CCCS(target) \ +#define jump_SAVE_CCCS(target,...) \ Sp(-1) = CCCS; \ Sp(-2) = stg_restore_cccs_info; \ Sp_adj(-2); \ - jump (target) [R1] + jump (target) [__VA_ARGS__] #else -#define jump_SAVE_CCCS(target) jump (target) [R1] +#define jump_SAVE_CCCS(target,...) jump (target) [__VA_ARGS__] #endif #endif /* APPLY_H */ |