summaryrefslogtreecommitdiff
path: root/rts/AutoApply.h
diff options
context:
space:
mode:
authorGeoffrey Mainland <mainland@apeiron.net>2016-01-28 09:58:37 -0500
committerGeoffrey Mainland <mainland@apeiron.net>2016-01-31 13:01:31 -0500
commit6544f8de1ed575378f14b82a2eaa06cab58b2d65 (patch)
treea7cdcff80641feeff8ef4f0b1e02e04f9187dcd4 /rts/AutoApply.h
parent90f688e892427b1894b6aacb1f8de8d2e41ecb56 (diff)
downloadhaskell-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.h6
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 */