aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2016-04-17 05:21:50 +0000
committerTom de Vries <vries@gcc.gnu.org>2016-04-17 05:21:50 +0000
commit17e7ab87992bddfeb3a5f051e024e94d97cbc0a8 (patch)
treefeed22d61c5fac4a518aa2fd15530570673c839f /gcc/passes.c
parent767f8bb1b1a1cacaff3d0c9432101eb963643e57 (diff)
downloadgcc-17e7ab87992bddfeb3a5f051e024e94d97cbc0a8.zip
gcc-17e7ab87992bddfeb3a5f051e024e94d97cbc0a8.tar.gz
gcc-17e7ab87992bddfeb3a5f051e024e94d97cbc0a8.tar.bz2
Add pass parameter to TERMINATE_PASS_LIST
2016-04-17 Tom de Vries <tom@codesourcery.com> PR other/68875 * pass_manager.h (TERMINATE_PASS_LIST): Add pass argument. * passes.c (pass_manager::pass_manager): Declare and init p_start in INSERT_PASSES_AFTER. Add pass parameter to TERMINATE_PASS_LIST, and check if it's equal to p_start. * passes.def: Add arguments to TERMINATE_PASS_LISTs. From-SVN: r235071
Diffstat (limited to 'gcc/passes.c')
-rw-r--r--gcc/passes.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/passes.c b/gcc/passes.c
index e896181..7b6deee 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -1555,8 +1555,15 @@ pass_manager::pass_manager (context *ctxt)
/* Build the tree of passes. */
-#define INSERT_PASSES_AFTER(PASS) \
- p = &(PASS);
+#define INSERT_PASSES_AFTER(PASS) \
+ { \
+ opt_pass **p_start; \
+ p_start = p = &(PASS);
+
+#define TERMINATE_PASS_LIST(PASS) \
+ gcc_assert (p_start == &PASS); \
+ *p = NULL; \
+ }
#define PUSH_INSERT_PASSES_WITHIN(PASS) \
{ \
@@ -1584,9 +1591,6 @@ pass_manager::pass_manager (context *ctxt)
PASS ## _ ## NUM->set_pass_param (0, ARG); \
} while (0)
-#define TERMINATE_PASS_LIST() \
- *p = NULL;
-
#include "pass-instances.def"
#undef INSERT_PASSES_AFTER