diff options
author | redfire <redfire@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-08-31 14:21:33 +0000 |
---|---|---|
committer | redfire <redfire@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-08-31 14:21:33 +0000 |
commit | a98f63609edbed88b96cfe1475bb4769bda1e3a3 (patch) | |
tree | 9df3428b8bceb7025810025d9d94892b5b7b3819 | |
parent | a0aa6380f570ff53d7fb03fd2111d87e5c3c72c1 (diff) | |
download | gcc-a98f63609edbed88b96cfe1475bb4769bda1e3a3.tar.gz |
2010-08-31 Jeremie salvucci <jeremie.salvucci@free.fr>
* xtramelt-ana-base.melt (gimple_iterator) : Iterator added for gimple.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@163673 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/melt/xtramelt-ana-base.melt | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/gcc/melt/xtramelt-ana-base.melt b/gcc/melt/xtramelt-ana-base.melt index c543359d007..d99365ffcf0 100644 --- a/gcc/melt/xtramelt-ana-base.melt +++ b/gcc/melt/xtramelt-ana-base.melt @@ -1525,7 +1525,7 @@ (:cstring name) treeident #{ /*$TREEIDENT ?*/ $TR && TREE_CODE ($TR) == IDENTIFIER_NODE }# - #{ /*$TREEIDENT !*/ $NAME = IDENTIFIER_POINTER ($TR) }# + #{ /*$TREEIDENT !*/ $NAME = (const char*) IDENTIFIER_POINTER ($TR) }# ) ;;; pattern tree_list matches any tree list node @@ -2560,6 +2560,39 @@ and discriminant $DIS, usually $DISCR_MIXED_LOCATION.}# }/*end eachparaminfunctiondecl*/ }# ) +;;; iterate on fields of a structure +(defciterator foreach_field_in_record_type + (:tree first_field) + efirt + (:tree field) + + #{ + if ($first_field && TREE_CODE ($first_field) == FIELD_DECL) + { + tree $efirt#_current; + for ($efirt#_current = $first_field; + $efirt#_current != NULL; + $efirt#_current = TREE_CHAIN ($efirt#_current)) + { + $field = $efirt#_current; + }# + + #{ + } + } + }#) + +;;; gimple iterator +(defun gimple_iterator (f data :gimple g) + (each_bb_cfun + () + (:basic_block body :tree header) + (let ((instructions (gimple_seq_of_basic_block body))) + (each_in_gimpleseq + (instructions) + (:gimple instruction) + (f data instruction)))) +) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;; loop related operations @@ -2638,6 +2671,7 @@ and discriminant $DIS, usually $DISCR_MIXED_LOCATION.}# foreach_argument_of_gimple_call foreach_basicblock_succ_edge foreach_case_of_gimple_switch + foreach_field_in_record_type foreach_mapbasicblock foreach_mapgimple foreach_maptree @@ -2696,6 +2730,7 @@ and discriminant $DIS, usually $DISCR_MIXED_LOCATION.}# gimple_debug_bind gimple_error_mark_or_nil gimple_goto + gimple_iterator gimple_label gimple_nop gimple_phi |