PandA-2024.02
tree_node_finder.cpp
Go to the documentation of this file.
1 /*
2  *
3  * _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
4  * _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
5  * _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
6  * _/ _/ _/ _/ _/ _/ _/ _/ _/
7  * _/ _/ _/ _/ _/ _/_/_/ _/ _/
8  *
9  * ***********************************************
10  * PandA Project
11  * URL: http://panda.dei.polimi.it
12  * Politecnico di Milano - DEIB
13  * System Architectures Group
14  * ***********************************************
15  * Copyright (C) 2004-2024 Politecnico di Milano
16  *
17  * This file is part of the PandA framework.
18  *
19  * The PandA framework is free software; you can redistribute it and/or modify
20  * it under the terms of the GNU General Public License as published by
21  * the Free Software Foundation; either version 3 of the License, or
22  * (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program. If not, see <http://www.gnu.org/licenses/>.
31  *
32  */
43 #include "tree_node_finder.hpp"
44 #include "exceptions.hpp" // for THROW_ASSERT
45 #include "token_interface.hpp" // for TOK, STOK, TreeV...
46 #include <boost/lexical_cast.hpp> // for lexical_cast
47 
48 #include "ext_tree_node.hpp"
49 #include "tree_basic_block.hpp"
50 #include "tree_node.hpp"
51 #include "tree_reindex.hpp"
52 
53 template <class type>
54 static bool check_value_opt(const std::map<TreeVocabularyTokenTypes_TokenEnum, std::string>::const_iterator& it_element,
55  const std::map<TreeVocabularyTokenTypes_TokenEnum, std::string>::const_iterator& it_end,
56  const type& value)
57 {
58  return it_element == it_end || value == boost::lexical_cast<type>(it_element->second);
59 }
60 
61 static bool check_value_opt(const std::map<TreeVocabularyTokenTypes_TokenEnum, std::string>::const_iterator& it_element,
62  const std::map<TreeVocabularyTokenTypes_TokenEnum, std::string>::const_iterator& it_end,
64 {
65  return it_element == it_end ||
66  value == static_cast<TreeVocabularyTokenTypes_TokenEnum>(std::stoull(it_element->second));
67 }
68 
69 #define CHECK_VALUE_OPT(token, value) check_value_opt(tree_node_schema.find(TOK(token)), tree_node_schema.end(), value)
70 
71 static bool
72 check_tree_node_opt(const std::map<TreeVocabularyTokenTypes_TokenEnum, std::string>::const_iterator& it_element,
73  const std::map<TreeVocabularyTokenTypes_TokenEnum, std::string>::const_iterator& it_end,
74  const tree_nodeRef& tn, const std::string&)
75 {
76  return it_element == it_end || (tn && GET_INDEX_NODE(tn) == std::stoull(it_element->second));
77 }
78 
79 #define CHECK_TREE_NODE_OPT(token, treeN) \
80  check_tree_node_opt(tree_node_schema.find(TOK(token)), tree_node_schema.end(), treeN, STOK(token))
81 
82 #define TREE_NOT_YET_IMPLEMENTED(token) \
83  THROW_ASSERT(tree_node_schema.find(TOK(token)) == tree_node_schema.end(), \
84  std::string("field not yet supported ") + STOK(token))
85 
86 void tree_node_finder::operator()(const tree_node* obj, unsigned int&)
87 {
88  THROW_ERROR("tree_node not supported: " + std::string(obj->get_kind_text()));
89 }
90 
91 void tree_node_finder::operator()(const WeightedNode* obj, unsigned int& mask)
92 {
93  tree_node_mask::operator()(obj, mask);
94 }
95 
96 void tree_node_finder::operator()(const tree_reindex* obj, unsigned int&)
97 {
98  THROW_ERROR("tree_node not supported: " + std::string(obj->get_kind_text()));
99 }
100 
101 void tree_node_finder::operator()(const attr* obj, unsigned int& mask)
102 {
103  tree_node_mask::operator()(obj, mask);
105 }
106 
107 void tree_node_finder::operator()(const srcp* obj, unsigned int& mask)
108 {
109  tree_node_mask::operator()(obj, mask);
111  tree_node_schema.find(TOK(TOK_SRCP))->second == obj->include_name + ":" +
112  std::to_string(obj->line_number) + ":" +
113  std::to_string(obj->column_number));
114 }
115 
116 void tree_node_finder::operator()(const decl_node* obj, unsigned int& mask)
117 {
118  tree_node_mask::operator()(obj, mask);
127 }
128 
129 void tree_node_finder::operator()(const expr_node* obj, unsigned int& mask)
130 {
131  tree_node_mask::operator()(obj, mask);
133 }
134 
135 void tree_node_finder::operator()(const gimple_node* obj, unsigned int& mask)
136 {
137  tree_node_mask::operator()(obj, mask);
140 }
141 
142 void tree_node_finder::operator()(const unary_expr* obj, unsigned int& mask)
143 {
144  tree_node_mask::operator()(obj, mask);
146 }
147 
148 void tree_node_finder::operator()(const binary_expr* obj, unsigned int& mask)
149 {
150  tree_node_mask::operator()(obj, mask);
152 }
153 
154 void tree_node_finder::operator()(const ternary_expr* obj, unsigned int& mask)
155 {
156  tree_node_mask::operator()(obj, mask);
159 }
160 
161 void tree_node_finder::operator()(const quaternary_expr* obj, unsigned int& mask)
162 {
163  tree_node_mask::operator()(obj, mask);
166 }
167 
168 void tree_node_finder::operator()(const type_node* obj, unsigned int& mask)
169 {
170  tree_node_mask::operator()(obj, mask);
175 }
176 
177 void tree_node_finder::operator()(const memory_tag* obj, unsigned int& mask)
178 {
179  tree_node_mask::operator()(obj, mask);
181  // std::vector<tree_nodeRef>::const_iterator vend = obj->list_of_aliases.end();
182  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_aliases.begin(); i != vend; i++)
183  // write_when_not_null(STOK(TOK_ALIAS), *i);
184 }
185 
186 void tree_node_finder::operator()(const cst_node* obj, unsigned int& mask)
187 {
188  tree_node_mask::operator()(obj, mask);
190 }
191 
192 void tree_node_finder::operator()(const error_mark* obj, unsigned int& mask)
193 {
194  tree_node_mask::operator()(obj, mask);
195 }
196 
197 void tree_node_finder::operator()(const array_type* obj, unsigned int& mask)
198 {
199  tree_node_mask::operator()(obj, mask);
201 }
202 
203 void tree_node_finder::operator()(const gimple_asm* obj, unsigned int& mask)
204 {
205  tree_node_mask::operator()(obj, mask);
209 }
210 
211 void tree_node_finder::operator()(const baselink* obj, unsigned int& mask)
212 {
213  tree_node_mask::operator()(obj, mask);
215 }
216 
217 void tree_node_finder::operator()(const gimple_bind* obj, unsigned int& mask)
218 {
219  tree_node_mask::operator()(obj, mask);
221  // std::vector<tree_nodeRef>::const_iterator vend = obj->list_of_vars.end();
222  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_vars.begin(); i != vend; i++)
223  // write_when_not_null(STOK(TOK_VARS), *i);
225 }
226 
227 void tree_node_finder::operator()(const binfo* obj, unsigned int& mask)
228 {
229  tree_node_mask::operator()(obj, mask);
230 
234  // std::vector<std::pair< unsigned int, tree_nodeRef> >::const_iterator vend = obj->list_of_access_binf.end();
235  // for (std::vector<std::pair< unsigned int, tree_nodeRef> >::const_iterator i = obj->list_of_access_binf.begin(); i
236  // != vend; i++)
237  //{
238  // WRITE_TOKEN2(os, i->first);
239  // write_when_not_null(STOK(TOK_BINF), i->second);
240  //}
241 }
242 
243 void tree_node_finder::operator()(const block* obj, unsigned int& mask)
244 {
245  tree_node_mask::operator()(obj, mask);
246  // if (obj->bl_flag)
247  // WRITE_UFIELD_STRING(os, obj->bl);
248 }
249 
250 void tree_node_finder::operator()(const call_expr* obj, unsigned int& mask)
251 {
252  tree_node_mask::operator()(obj, mask);
255 }
256 
257 void tree_node_finder::operator()(const aggr_init_expr* obj, unsigned int& mask)
258 {
259  tree_node_mask::operator()(obj, mask);
261 }
262 
263 void tree_node_finder::operator()(const gimple_call* obj, unsigned int& mask)
264 {
265  tree_node_mask::operator()(obj, mask);
268 }
269 
270 void tree_node_finder::operator()(const case_label_expr* obj, unsigned int& mask)
271 {
272  tree_node_mask::operator()(obj, mask);
275 }
276 
277 void tree_node_finder::operator()(const cast_expr* obj, unsigned int& mask)
278 {
279  tree_node_mask::operator()(obj, mask);
281 }
282 
283 void tree_node_finder::operator()(const complex_cst* obj, unsigned int& mask)
284 {
285  tree_node_mask::operator()(obj, mask);
287 }
288 
289 void tree_node_finder::operator()(const complex_type* obj, unsigned int& mask)
290 {
291  tree_node_mask::operator()(obj, mask);
294 }
295 
296 void tree_node_finder::operator()(const gimple_cond* obj, unsigned int& mask)
297 {
298  tree_node_mask::operator()(obj, mask);
300 }
301 
302 void tree_node_finder::operator()(const const_decl* obj, unsigned int& mask)
303 {
304  tree_node_mask::operator()(obj, mask);
306 }
307 
308 void tree_node_finder::operator()(const constructor* obj, unsigned int& mask)
309 {
310  tree_node_mask::operator()(obj, mask);
314  // std::vector<std::pair< tree_nodeRef, tree_nodeRef> >::const_iterator vend = obj->list_of_idx_valu.end();
315  // for (std::vector<std::pair< tree_nodeRef, tree_nodeRef> >::const_iterator i = obj->list_of_idx_valu.begin(); i !=
316  // vend; i++)
317  //{
318  // write_when_not_null(STOK(TOK_IDX), i->first);
319  // write_when_not_null(STOK(TOK_VALU), i->second);
320  //}
321 }
322 
323 void tree_node_finder::operator()(const enumeral_type* obj, unsigned int& mask)
324 {
325  tree_node_mask::operator()(obj, mask);
329 }
330 
331 void tree_node_finder::operator()(const expr_stmt* obj, unsigned int& mask)
332 {
333  tree_node_mask::operator()(obj, mask);
336 }
337 
338 void tree_node_finder::operator()(const field_decl* obj, unsigned int& mask)
339 {
340  tree_node_mask::operator()(obj, mask);
344 }
345 
346 void tree_node_finder::operator()(const function_decl* obj, unsigned int& mask)
347 {
348  tree_node_mask::operator()(obj, mask);
349  // std::vector<std::string>::const_iterator vend = obj->list_of_op_names.end();
350  // for (std::vector<std::string>::const_iterator i = obj->list_of_op_names.begin(); i != vend; i++)
351  // WRITE_UFIELD_STRING(os, *i);
352  find_res =
355 
366 #if HAVE_FROM_PRAGMA_BUILT
367  CHECK_VALUE_OPT(TOK_OMP_ATOMIC, obj->omp_atomic) && CHECK_VALUE_OPT(TOK_OMP_BODY_LOOP, obj->omp_body_loop) &&
368  CHECK_VALUE_OPT(TOK_OMP_CRITICAL_SESSION, obj->omp_critical) &&
369  CHECK_VALUE_OPT(TOK_OMP_FOR_WRAPPER, obj->omp_for_wrapper) &&
370 #endif
373 }
374 
375 void tree_node_finder::operator()(const function_type* obj, unsigned int& mask)
376 {
377  tree_node_mask::operator()(obj, mask);
380 }
381 
382 void tree_node_finder::operator()(const gimple_assign* obj, unsigned int& mask)
383 {
384  tree_node_mask::operator()(obj, mask);
385 
389 }
390 
391 void tree_node_finder::operator()(const gimple_goto* obj, unsigned int& mask)
392 {
393  tree_node_mask::operator()(obj, mask);
395 }
396 
397 void tree_node_finder::operator()(const handler* obj, unsigned int& mask)
398 {
399  tree_node_mask::operator()(obj, mask);
400 
402 }
403 
404 void tree_node_finder::operator()(const identifier_node* obj, unsigned int& mask)
405 {
406  tree_node_mask::operator()(obj, mask);
407  THROW_ERROR("Use find_identifier_nodeID to find identifier_node objects");
408 }
409 
410 void tree_node_finder::operator()(const integer_cst* obj, unsigned int& mask)
411 {
412  tree_node_mask::operator()(obj, mask);
414 }
415 
416 void tree_node_finder::operator()(const integer_type* obj, unsigned int& mask)
417 {
418  tree_node_mask::operator()(obj, mask);
420  // if (obj->str != "")
421  // WRITE_UFIELD(os, obj->str);
424 }
425 
426 void tree_node_finder::operator()(const gimple_label* obj, unsigned int& mask)
427 {
428  tree_node_mask::operator()(obj, mask);
430 }
431 
432 void tree_node_finder::operator()(const method_type* obj, unsigned int& mask)
433 {
434  tree_node_mask::operator()(obj, mask);
436 }
437 
438 void tree_node_finder::operator()(const namespace_decl* obj, unsigned int& mask)
439 {
440  tree_node_mask::operator()(obj, mask);
442 }
443 
444 void tree_node_finder::operator()(const overload* obj, unsigned int& mask)
445 {
446  tree_node_mask::operator()(obj, mask);
447 
449 }
450 
451 void tree_node_finder::operator()(const parm_decl* obj, unsigned int& mask)
452 {
453  tree_node_mask::operator()(obj, mask);
458 }
459 
460 void tree_node_finder::operator()(const gimple_phi* obj, unsigned int& mask)
461 {
462  tree_node_mask::operator()(obj, mask);
463 
467  // std::vector<std::pair< tree_nodeRef, int> >::const_iterator vend = obj->list_of_def_edge.end();
468  // for (std::vector<std::pair< tree_nodeRef, int> >::const_iterator i = obj->list_of_def_edge.begin(); i != vend;
469  // i++)
470  //{
471  // write_when_not_null(STOK(TOK_DEF), i->first);
472  // WRITE_NFIELD(os, STOK(TOK_EDGE), i->second);
473  //}
474 }
475 
476 void tree_node_finder::operator()(const pointer_type* obj, unsigned int& mask)
477 {
478  tree_node_mask::operator()(obj, mask);
480 }
481 
482 void tree_node_finder::operator()(const real_cst* obj, unsigned int& mask)
483 {
484  tree_node_mask::operator()(obj, mask);
487 }
488 
489 void tree_node_finder::operator()(const real_type* obj, unsigned int& mask)
490 {
491  tree_node_mask::operator()(obj, mask);
493 }
494 
495 void tree_node_finder::operator()(const record_type* obj, unsigned int& mask)
496 {
497  tree_node_mask::operator()(obj, mask);
505  // std::vector<tree_nodeRef>::const_iterator vend1 = obj->list_of_flds.end();
506  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_flds.begin(); i != vend1; i++)
507  // write_when_not_null(STOK(TOK_FLDS), *i);
509  // std::vector<tree_nodeRef>::const_iterator vend2 = obj->list_of_fncs.end();
510  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_fncs.begin(); i != vend2; i++)
511  // write_when_not_null(STOK(TOK_FNCS), *i);
512 }
513 
514 void tree_node_finder::operator()(const reference_type* obj, unsigned int& mask)
515 {
516  tree_node_mask::operator()(obj, mask);
518 }
519 
520 void tree_node_finder::operator()(const result_decl* obj, unsigned int& mask)
521 {
522  tree_node_mask::operator()(obj, mask);
525 }
526 
527 void tree_node_finder::operator()(const gimple_return* obj, unsigned int& mask)
528 {
529  tree_node_mask::operator()(obj, mask);
531 }
532 
533 void tree_node_finder::operator()(const return_stmt* obj, unsigned int& mask)
534 {
535  tree_node_mask::operator()(obj, mask);
536 
538 }
539 
540 void tree_node_finder::operator()(const scope_ref* obj, unsigned int& mask)
541 {
542  tree_node_mask::operator()(obj, mask);
544 }
545 
546 void tree_node_finder::operator()(const ssa_name* obj, unsigned int& mask)
547 {
548  tree_node_mask::operator()(obj, mask);
549 
552  // CHECK_TREE_NODE_OPT(TOK_PTR_INFO, obj->ptr_info) &&
557 }
558 
559 void tree_node_finder::operator()(const statement_list* obj, unsigned int& mask)
560 {
561  tree_node_mask::operator()(obj, mask);
562 
564  // std::vector<tree_nodeRef>::const_iterator vend = obj->list_of_stmt.end();
565  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_stmt.begin(); i != vend; i++)
566  // write_when_not_null(STOK(TOK_STMT), *i);
568  // std::map<int, blocRef>::const_iterator mend = obj->list_of_bloc.end();
569  // for (std::map<int, blocRef>::const_iterator i = obj->list_of_bloc.begin(); i != mend; i++)
570  // write_when_not_null_bloc(STOK(TOK_BLOC), i->second);
571 }
572 
573 void tree_node_finder::operator()(const string_cst* obj, unsigned int& mask)
574 {
575  tree_node_mask::operator()(obj, mask);
577 }
578 
579 void tree_node_finder::operator()(const gimple_switch* obj, unsigned int& mask)
580 {
581  tree_node_mask::operator()(obj, mask);
583 }
584 
585 void tree_node_finder::operator()(const target_expr* obj, unsigned int& mask)
586 {
587  tree_node_mask::operator()(obj, mask);
590 }
591 
592 void tree_node_finder::operator()(const lut_expr* obj, unsigned int& mask)
593 {
594  tree_node_mask::operator()(obj, mask);
600 }
601 
602 void tree_node_finder::operator()(const template_decl* obj, unsigned int& mask)
603 {
604  tree_node_mask::operator()(obj, mask);
607 }
608 
609 void tree_node_finder::operator()(const template_parm_index* obj, unsigned int& mask)
610 {
611  tree_node_mask::operator()(obj, mask);
616 }
617 
618 void tree_node_finder::operator()(const tree_list* obj, unsigned int& mask)
619 {
620  tree_node_mask::operator()(obj, mask);
621 
624 }
625 
626 void tree_node_finder::operator()(const tree_vec* obj, unsigned int& mask)
627 {
628  tree_node_mask::operator()(obj, mask);
629 
632  // std::vector<tree_nodeRef>::const_iterator vend = obj->list_of_op.end();
633  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_op.begin(); i != vend; i++)
634  // write_when_not_null(STOK(TOK_OP), *i);
635 }
636 
637 void tree_node_finder::operator()(const try_block* obj, unsigned int& mask)
638 {
639  tree_node_mask::operator()(obj, mask);
640 
643 }
644 
645 void tree_node_finder::operator()(const type_decl* obj, unsigned int& mask)
646 {
647  tree_node_mask::operator()(obj, mask);
650 }
651 
652 void tree_node_finder::operator()(const union_type* obj, unsigned int& mask)
653 {
654  tree_node_mask::operator()(obj, mask);
657  // std::vector<tree_nodeRef>::const_iterator vend1 = obj->list_of_flds.end();
658  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_flds.begin(); i != vend1; i++)
659  // write_when_not_null(STOK(TOK_FLDS), *i);
661  // std::vector<tree_nodeRef>::const_iterator vend2 = obj->list_of_fncs.end();
662  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_fncs.begin(); i != vend2; i++)
663  // write_when_not_null(STOK(TOK_FNCS), *i);
664 }
665 
666 void tree_node_finder::operator()(const var_decl* obj, unsigned int& mask)
667 {
668  tree_node_mask::operator()(obj, mask);
669 
683 }
684 
685 void tree_node_finder::operator()(const vector_cst* obj, unsigned int& mask)
686 {
687  tree_node_mask::operator()(obj, mask);
689  // std::vector<tree_nodeRef>::const_iterator vend = obj->list_of_valu.end();
690  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_valu.begin(); i != vend; i++)
691  // write_when_not_null(STOK(TOK_VALU), *i);
692 }
693 
694 void tree_node_finder::operator()(const type_argument_pack* obj, unsigned int& mask)
695 {
696  tree_node_mask::operator()(obj, mask);
698 }
699 
700 void tree_node_finder::operator()(const nontype_argument_pack* obj, unsigned int& mask)
701 {
702  tree_node_mask::operator()(obj, mask);
704 }
705 
706 void tree_node_finder::operator()(const type_pack_expansion* obj, unsigned int& mask)
707 {
708  tree_node_mask::operator()(obj, mask);
711 }
712 
713 void tree_node_finder::operator()(const expr_pack_expansion* obj, unsigned int& mask)
714 {
715  tree_node_mask::operator()(obj, mask);
718 }
719 
720 void tree_node_finder::operator()(const vector_type* obj, unsigned int& mask)
721 {
722  tree_node_mask::operator()(obj, mask);
724 }
725 
726 void tree_node_finder::operator()(const target_mem_ref* obj, unsigned int& mask)
727 {
728  tree_node_mask::operator()(obj, mask);
729 
734 }
735 
736 void tree_node_finder::operator()(const target_mem_ref461* obj, unsigned int& mask)
737 {
738  tree_node_mask::operator()(obj, mask);
739 
743 }
744 
745 void tree_node_finder::operator()(const bloc* obj, unsigned int& mask)
746 {
747  tree_node_mask::operator()(obj, mask);
748  // WRITE_UFIELD(os, obj->number);
751 
753  // std::vector<int>::const_iterator vend1 = obj->list_of_pred.end();
754  // for (std::vector<int>::const_iterator i = obj->list_of_pred.begin(); i != vend1; i++)
755  // if (*i == bloc::ENTRY_BLOCK_ID)
756  // WRITE_NFIELD(os, STOK(TOK_PRED), STOK(TOK_ENTRY));
757  // else
758  // WRITE_NFIELD(os, STOK(TOK_PRED), *i);
760  // std::vector<int>::const_iterator vend2 = obj->list_of_succ.end();
761  // for (std::vector<int>::const_iterator i = obj->list_of_succ.begin(); i != vend2; i++)
762  // if (*i == bloc::EXIT_BLOCK_ID)
763  // WRITE_NFIELD(os, STOK(TOK_SUCC), STOK(TOK_EXIT));
764  // else
765  // WRITE_NFIELD(os, STOK(TOK_SUCC), *i);
767  // std::vector<tree_nodeRef>::const_iterator vend3 = obj->list_of_phi.end();
768  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_phi.begin(); i != vend3; i++)
769  // write_when_not_null(STOK(TOK_PHI), *i);
770  // std::vector<tree_nodeRef>::const_iterator vend4 = obj->list_of_stmt.end();
772  // for (std::vector<tree_nodeRef>::const_iterator i = obj->list_of_stmt.begin(); i != vend4; i++)
773  // write_when_not_null(STOK(TOK_STMT), *i);
774 }
775 
776 void tree_node_finder::operator()(const gimple_while* obj, unsigned int& mask)
777 {
778  tree_node_mask::operator()(obj, mask);
780 }
781 
782 void tree_node_finder::operator()(const gimple_for* obj, unsigned int& mask)
783 {
784  tree_node_mask::operator()(obj, mask);
786 }
787 
788 void tree_node_finder::operator()(const gimple_multi_way_if* obj, unsigned int& mask)
789 {
790  tree_node_mask::operator()(obj, mask);
792 }
793 
794 void tree_node_finder::operator()(const null_node* obj, unsigned int& mask)
795 {
796  tree_node_mask::operator()(obj, mask);
797 }
798 
799 void tree_node_finder::operator()(const gimple_pragma* obj, unsigned int& mask)
800 {
801  tree_node_mask::operator()(obj, mask);
802 }
803 
804 void tree_node_finder::operator()(const omp_pragma* obj, unsigned int& mask)
805 {
806  tree_node_mask::operator()(obj, mask);
807 }
808 
809 void tree_node_finder::operator()(const omp_for_pragma* obj, unsigned int& mask)
810 {
811  tree_node_mask::operator()(obj, mask);
812 }
813 
814 void tree_node_finder::operator()(const omp_declare_simd_pragma* obj, unsigned int& mask)
815 {
816  tree_node_mask::operator()(obj, mask);
817 }
818 
819 void tree_node_finder::operator()(const omp_simd_pragma* obj, unsigned int& mask)
820 {
821  tree_node_mask::operator()(obj, mask);
822 }
823 
824 void tree_node_finder::operator()(const omp_target_pragma* obj, unsigned int& mask)
825 {
826  tree_node_mask::operator()(obj, mask);
827 }
828 
829 void tree_node_finder::operator()(const omp_critical_pragma* obj, unsigned int& mask)
830 {
831  tree_node_mask::operator()(obj, mask);
832 }
833 void tree_node_finder::operator()(const omp_task_pragma* obj, unsigned int& mask)
834 {
835  tree_node_mask::operator()(obj, mask);
836 }
837 
838 void tree_node_finder::operator()(const omp_parallel_pragma* obj, unsigned int& mask)
839 {
840  tree_node_mask::operator()(obj, mask);
841 }
842 
843 void tree_node_finder::operator()(const omp_sections_pragma* obj, unsigned int& mask)
844 {
845  tree_node_mask::operator()(obj, mask);
846 }
847 
848 void tree_node_finder::operator()(const omp_parallel_sections_pragma* obj, unsigned int& mask)
849 {
850  tree_node_mask::operator()(obj, mask);
851 }
852 
853 void tree_node_finder::operator()(const omp_section_pragma* obj, unsigned int& mask)
854 {
855  tree_node_mask::operator()(obj, mask);
856 }
857 
858 void tree_node_finder::operator()(const map_pragma* obj, unsigned int& mask)
859 {
860  tree_node_mask::operator()(obj, mask);
861 }
862 
863 void tree_node_finder::operator()(const call_hw_pragma* obj, unsigned int& mask)
864 {
865  tree_node_mask::operator()(obj, mask);
866 }
867 
868 void tree_node_finder::operator()(const call_point_hw_pragma* obj, unsigned int& mask)
869 {
870  tree_node_mask::operator()(obj, mask);
871 }
872 
873 void tree_node_finder::operator()(const issue_pragma* obj, unsigned int& mask)
874 {
875  tree_node_mask::operator()(obj, mask);
876 }
877 
878 void tree_node_finder::operator()(const profiling_pragma* obj, unsigned int& mask)
879 {
880  tree_node_mask::operator()(obj, mask);
881 }
882 
883 void tree_node_finder::operator()(const blackbox_pragma* obj, unsigned int& mask)
884 {
885  tree_node_mask::operator()(obj, mask);
886 }
887 
888 void tree_node_finder::operator()(const statistical_profiling* obj, unsigned int& mask)
889 {
890  tree_node_mask::operator()(obj, mask);
891 }
struct definition of the type_decl tree node.
Definition: tree_node.hpp:5470
bool static_static_flag
to manage C++ code with static member
Definition: tree_node.hpp:5675
tree_nodeRef ptd
ptd field points to the node for the type pointed to.
Definition: tree_node.hpp:3909
This struct specifies the integer_cst node.
Definition: tree_node.hpp:3242
static bool check_value_opt(const std::map< TreeVocabularyTokenTypes_TokenEnum, std::string >::const_iterator &it_element, const std::map< TreeVocabularyTokenTypes_TokenEnum, std::string >::const_iterator &it_end, const type &value)
tree_nodeRef in
in is the operand 2: ASM_INPUTS, this represents the inputs for the statement.
Definition: tree_node.hpp:1591
tree_nodeRef op
the label
Definition: tree_node.hpp:3351
struct definition of the const_decl tree node.
Definition: tree_node.hpp:2386
This struct implements the target_expr node.
Definition: tree_node.hpp:4815
integer_cst_t value
The value of the integer cast.
Definition: tree_node.hpp:3253
bool default_flag
default_flag is true if the label is a &#39;default&#39; label
Definition: tree_node.hpp:2025
int line
line is the line number where the compound_stmt is defined.
Definition: tree_node.hpp:5417
tree_nodeRef attributes
Definition: tree_node.hpp:912
tree_nodeRef min
min: tree-dump.c use the macro TYPE_MIN_VALUE
Definition: tree_node.hpp:3304
tree_nodeRef init
init field holds the value to initialize a variable to.
Definition: tree_node.hpp:4279
tree_nodeRef op2
second operand
Definition: tree_node.hpp:6056
bool operating_system_flag
operating system flag: it&#39;s true when this is a variable of operating system library ...
Definition: tree_node.hpp:924
tree_nodeRef size
size field holds the size of datum, in bits.
Definition: tree_node.hpp:3678
int used
used is nonzero if the name is used in its scope (macro TREE_USED)
Definition: tree_node.hpp:3690
This struct specifies the field bloc (basic block).
unsigned int prec
prec field is the number of bits used by this type (macro TYPE_PRECISION)
Definition: tree_node.hpp:3292
struct definition of the vector_type tree node.
Definition: tree_node.hpp:5938
unsigned int algn
algn field holds the alignment required for the datum, in bits.
Definition: tree_node.hpp:5710
struct definition of the array_type tree node.
Definition: tree_node.hpp:1520
tree_nodeRef max
max: tree-dump.c use the macro TYPE_MAX_VALUE
Definition: tree_node.hpp:3307
tree_nodeRef unql
unql field, in any member of such a chain, points to the start of the chain.
Definition: tree_node.hpp:1343
tree_nodeRef tmpl_parms
tmpl_parms holds template parameters It is a TREE_LIST, his VALU field is a TREE_VEC whose LIST_OF_OP...
Definition: tree_node.hpp:2828
struct definition of the real_type tree node.
Definition: tree_node.hpp:4039
tree_nodeRef decl
Definition: tree_node.hpp:5079
tree_nodeRef name
name field contains info on the name used in the program for this type.It is either a TYPE_DECL node...
Definition: tree_node.hpp:1337
bool writing_memory
True if function write in memory somehow.
Definition: tree_node.hpp:2780
tree_nodeRef next
Is the next statement.
Definition: tree_node.hpp:2606
int ctor
operand count
Definition: tree_node.hpp:1925
tree_nodeRef bfld
binf field are information about this type, as a base type for itself.
Definition: tree_node.hpp:4109
unsigned int algn
algn field holds the alignment required for the datum, in bits.
Definition: tree_node.hpp:4291
tree_nodeRef op1
The second operand of the binary expression.
Definition: tree_node.hpp:3024
Any erroneous construct is parsed into a node of this type.
Definition: tree_node.hpp:1462
bool volatile_flag
volatile_flag is true if the node is public: it means that the name is accessible from outside...
Definition: tree_node.hpp:1582
bool temporary_address
Definition: tree_node.hpp:3033
This struct specifies the statement_list node.
Definition: tree_node.hpp:4662
std::string valr
valr is the real value
Definition: tree_node.hpp:4004
tree_nodeRef name
name field contains an identifier_node used to represent a name.
Definition: tree_node.hpp:883
bool packed_flag
Indicated that objects of this type should be laid out in as compact a way as possible.
Definition: tree_node.hpp:1365
tree_nodeRef elts
field elts is the type of an vector element (tree-dump.c use the macro TREE_TYPE) ...
Definition: tree_node.hpp:5946
tree_nodeRef idx
INDEX register.
Definition: tree_node.hpp:4955
A HANDLER wraps a catch handler for the HANDLER_TYPE.
Definition: tree_node.hpp:3141
unsigned int column_number
column_number holds the column number.
Definition: tree_node.hpp:850
tree_nodeRef param_packs
PACK_EXPANSION_PARAMETER_PACKS.
Definition: tree_node.hpp:2197
tree_nodeRef op
op is casted node
Definition: tree_node.hpp:2065
unsigned int line_number
line_number holds a line number.
Definition: tree_node.hpp:845
struct definition of the source position.
Definition: tree_node.hpp:832
tree_nodeRef type
type of the expression
Definition: tree_node.hpp:4873
tree_nodeRef orig
For any sort of a ..._DECL node, this points to the original (abstract) decl node which this decl is ...
Definition: tree_node.hpp:899
Represents an argument pack of types (or templates).
Definition: tree_node.hpp:5139
tree_nodeRef op1
first operand
Definition: tree_node.hpp:6053
struct definition of the function_decl tree node.
Definition: tree_node.hpp:2759
tree_nodeRef size
size field contains a tree that is an expression for the size in bits.
Definition: tree_node.hpp:1349
struct definition of the method_type tree node.
Definition: tree_node.hpp:3452
tree_nodeRef decl
it is the target of an initialization
Definition: tree_node.hpp:4822
tree_nodeRef var
var is the variable being referenced (macro SSA_NAME_VAR).
Definition: tree_node.hpp:4543
tree_nodeRef arg
PACK_EXPANSION_EXTRA_ARGS.
Definition: tree_node.hpp:2200
TreeVocabularyTokenTypes_TokenEnum qual
qual is the set of type qualifiers for this type.
Definition: tree_node.hpp:1328
tree_nodeRef refd
refd field references to the node for the type referenced to.
Definition: tree_node.hpp:4233
tree_nodeRef imag
imag is the TREE_IMAGPART which content is other constant node.
Definition: tree_node.hpp:2248
bool undefined_flag
undefined_flag means external reference: do not allocate storage, and refer to a definition elsewhere...
Definition: tree_node.hpp:2848
tree_nodeRef prms
prms field is a list of types of arguments expected, this list is made of tree_list nodes...
Definition: tree_node.hpp:2981
tree_nodeRef mngl
mngl field contains the name of the object as the assembler will see it.
Definition: tree_node.hpp:890
This struct specifies the gimple_label node.
Definition: tree_node.hpp:3343
tree_nodeRef size
size field holds the size of datum, in bits.
Definition: tree_node.hpp:5704
This struct specifies the string_cst node.
Definition: tree_node.hpp:4724
exceptions managed by PandA
#define TREE_NOT_YET_IMPLEMENTED(token)
tree_nodeRef op4
fourth operand
Definition: tree_node.hpp:6062
tree_nodeRef op2
The third operand of the ternary expression.
Definition: tree_node.hpp:1253
tree_nodeRef crnt
Is the current function declaration.
Definition: tree_node.hpp:3629
tree_nodeRef op1
The second operand of the Quaternary expression.
Definition: tree_node.hpp:1287
struct definition of the union_type tree node.
Definition: tree_node.hpp:5540
A simple interface to token object of the raw files.
tree_nodeRef fn
fn field is the initial declaration for this function declaration
Definition: tree_node.hpp:2815
struct definition of the unary node structures.
Definition: tree_node.hpp:1177
bool system_flag
system flag: it&#39;s true when this is a system variable
Definition: tree_node.hpp:1368
tree_nodeRef type
type field is the type of the node
Definition: tree_node.hpp:2442
tree_nodeRef smt_ann
symbol_memory_tag annotation
Definition: tree_node.hpp:2679
std::string bit_values
for each bit of the var_decl tells if it is equal to U,X,0,1 meaningful only in case the variable is ...
Definition: tree_node.hpp:5732
struct definition of the record_type tree node.
Definition: tree_node.hpp:4078
tree_nodeRef op6
sixth operand
Definition: tree_node.hpp:6068
tree_nodeRef op0
The first operand of the binary expression.
Definition: tree_node.hpp:3021
tree_nodeRef size
size field holds the size of datum, in bits.
Definition: tree_node.hpp:4285
GIMPLE_BIND <VARS, BLOCK, BODY> represents a lexical scope.
Definition: tree_node.hpp:1664
unsigned int prec
prec field is the number of bits used by this type (tree-dump.c use the macro TYPE_PRECISION) ...
Definition: tree_node.hpp:2526
tree_nodeRef base
BASE register.
Definition: tree_node.hpp:4949
tree_nodeRef op
PACK_EXPANSION_PATTERN.
Definition: tree_node.hpp:2194
#define GET_INDEX_NODE(t)
Macro used to hide implementation details when accessing a tree_node from another tree_node...
Definition: tree_node.hpp:361
tree_nodeRef op1
The second operand of the binary expression.
Definition: tree_node.hpp:1217
struct definition of the ternary node structures.
Definition: tree_node.hpp:1239
bool ptrmem_flag
true when ptrmem obj is considered
Definition: tree_node.hpp:4118
tree_nodeRef tmpl_args
tmpl_args holds template instantiations It is a TREE_VEC whose LIST_OF_OP holds template instantiatio...
Definition: tree_node.hpp:2835
This struct specifies the gimple_cond node.
Definition: tree_node.hpp:2345
tree_nodeRef clas
clas field is the type of "self".
Definition: tree_node.hpp:3466
struct definition of the function_type tree node.
Definition: tree_node.hpp:2960
std::string valx
valx field
Definition: tree_node.hpp:4007
unsigned int algn
algn field holds the alignment required for the datum, in bits.
Definition: tree_node.hpp:2666
tree_nodeRef op7
seventh operand
Definition: tree_node.hpp:6071
tree_nodeRef op1
op1 is the operand 1 (macro CASE_HIGH) of the case label expression
Definition: tree_node.hpp:2022
std::string str
str is the operand 0: ASM_STRING. ASM_STRING returns a STRING_CST for the instruction (e...
Definition: tree_node.hpp:1585
tree_nodeRef argt
argt field is the type in which the argument is actually passed, which may be different from its type...
Definition: tree_node.hpp:3672
struct definition of the parm_decl tree node.
Definition: tree_node.hpp:3660
Data structure describing a basic block at tree level.
This class is used to perform the re-index of all tree nodes.
int line
line is the line number where the compound_stmt is defined.
Definition: tree_node.hpp:2600
tree_nodeRef chan
chan field: the decls in one binding context are chained through this field.
Definition: tree_node.hpp:936
AGGR_INIT_EXPRs have a variably-sized representation similar to that of CALL_EXPRs.
Definition: tree_node.hpp:1919
Constructor: return an aggregate value made from specified components.
Definition: tree_node.hpp:2434
tree_nodeRef bpos
bpos field is the field position, counting in bytes, of the byte containing the bit closest to the be...
Definition: tree_node.hpp:2674
This struct specifies the binfo node.
Definition: tree_node.hpp:1713
struct definition of the template_decl tree node.
Definition: tree_node.hpp:4993
This struct represents a try-block statement.
Definition: tree_node.hpp:5409
bool varargs_flag
varargs flag: tells if function is of varargs type
Definition: tree_node.hpp:2968
#define TOK(token)
Macro used to convert a token symbol into a treeVocabularyTokenTypes.
tree_nodeRef binf
type context
Definition: tree_node.hpp:4112
bool real_flag
true when the complex base type is a float (macro COMPLEX_FLOAT_TYPE_P)
Definition: tree_node.hpp:2296
std::string include_name
include_name is a filename string, this can be the location of a reference, if no definition has been...
Definition: tree_node.hpp:839
tree_nodeRef init
init field holds the value to initialize a variable to.
Definition: tree_node.hpp:2654
tree_nodeRef domn
field domn is the type to index by (tree-dump.c use the macro TYPE_DOMAIN).
Definition: tree_node.hpp:1534
tree_nodeRef spcs
prms field holds the specialization parameters vector.
Definition: tree_node.hpp:5009
Abstract pure class for the tree structure.
Definition: tree_node.hpp:139
tree_nodeRef arg
arguments stored in the argument pack
Definition: tree_node.hpp:5185
tree_nodeRef res
res is the new SSA_NAME node created by the PHI node.
Definition: tree_node.hpp:3772
bool builtin_flag
flag true when the function is a builtin
Definition: tree_node.hpp:2853
struct definition of the label_decl tree node.
Definition: tree_node.hpp:3529
struct definition of the label_decl tree node.
Definition: tree_node.hpp:5659
tree_nodeRef op3
The fourth operand of the Quaternary expression.
Definition: tree_node.hpp:1293
Directive represinting mapping of a software function on a component.
tree node finder.
struct definition of the result_decl tree node.
Definition: tree_node.hpp:4266
This struct specifies the vector_cst node.
Definition: tree_node.hpp:5888
tree_nodeRef scpe
context/scope of the type object.
Definition: tree_node.hpp:1355
tree_nodeRef memuse
whole memory operand use
Definition: tree_node.hpp:1087
virtual std::string get_kind_text() const =0
Virtual function returning the name of the actual class.
This struct specifies the gimple_phi node.
Definition: tree_node.hpp:3742
unsigned int loop_id
loop identifier coming from GCC
bool volatile_flag
in case a ssa_name is never defined this Boolean member is true
Definition: tree_node.hpp:4553
This struct represents a list-like node for chaining overloading candidates.
Definition: tree_node.hpp:3621
bool artificial_flag
artificial_flag field is used to indicate that this decl_node represents a compiler-generated entity...
Definition: tree_node.hpp:918
struct definition of the Quaternary node structures.
Definition: tree_node.hpp:1276
int use_tmpl
use_tmpl indicates whether or not (and how) a template was expanded for this VAR_DECL.
Definition: tree_node.hpp:5672
bool unsigned_flag
unsigned means an unsigned type (macro TYPE_UNSIGNED)
Definition: tree_node.hpp:3301
tree_nodeRef init
it is the initializer for the target
Definition: tree_node.hpp:4825
tree_nodeRef body
is the body of the handler
Definition: tree_node.hpp:3152
bool unsigned_flag
unsigned means an unsigned type (tree-dump.c use the macro TYPE_UNSIGNED)
Definition: tree_node.hpp:2532
This struct specifies the gimple_assign node (GCC 4.3 tree node).
Definition: tree_node.hpp:3015
tree_nodeRef type
type field is the actual data type node being inherited in this basetype.(BINFO_TYPE) ...
Definition: tree_node.hpp:1721
tree_nodeRef tmpl_parms
tmpl_parms holds template parameters It is a TREE_LIST, his VALU field is a TREE_VEC whose LIST_OF_OP...
Definition: tree_node.hpp:4130
bool libbambu_flag
it is true when this is a declared inside libbambu
Definition: tree_node.hpp:930
bool library_system_flag
library system flag: it&#39;s true when this is a variable of a standard library (e.g libmath) ...
Definition: tree_node.hpp:927
bool register_flag
register_flag means declared &#39;register&#39; (macro DECL_REGISTER)
Definition: tree_node.hpp:5722
This struct specifies super class for constant nodes.
Definition: tree_node.hpp:1431
tree_nodeRef tmpl_parms
tmpl_parms holds template parameters It is a TREE_LIST, his VALU field is a TREE_VEC whose LIST_OF_OP...
Definition: tree_node.hpp:5481
Directive represinting mapping of a function call on a component.
bool C_flag
is true when the declaration has the C attribute
Definition: tree_node.hpp:939
tree_nodeRef tmpl_args
tmpl_args holds template instantiations It is a TREE_VEC whose LIST_OF_OP holds template instantiatio...
Definition: tree_node.hpp:4136
unsigned int hpl
store the relation between the phi defs inserted in the live_out set and phi uses ...
tree_nodeRef max
max: tree-dump.c use the macro TYPE_MAX_VALUE
Definition: tree_node.hpp:2538
Low-level memory addressing.
Definition: tree_node.hpp:4938
bool reverse_restrict_flag
True if parameters are not alias after its invocation.
Definition: tree_node.hpp:2777
This struct specifies the gimple_return node.
Definition: tree_node.hpp:4354
tree_nodeRef body
body field is the saved representation of the body of the entire function.
Definition: tree_node.hpp:2870
bool readonly_flag
readonly_flag means read-onlyy parameter (macro TREE_READONLY)
Definition: tree_node.hpp:3702
tree_nodeRef idx
INDEX register.
Definition: tree_node.hpp:4882
#define CHECK_TREE_NODE_OPT(token, treeN)
tree_nodeRef expr
Is the expression of the statement.
Definition: tree_node.hpp:4398
bool simple_pipeline
True if the pipeline does not contain any unbounded operation.
Definition: tree_node.hpp:2789
tree_nodeRef prms
prms field holds the template parameters vector.
Definition: tree_node.hpp:5012
bool addr_taken
True when we are able to prove that its address is taken and escape from a the function in which is d...
Definition: tree_node.hpp:5686
tree_nodeRef out
out is the operand 1: ASM_OUTPUTS, this represents the outputs for the statement. ...
Definition: tree_node.hpp:1588
Represents an expression that will be expanded into a list of expressions when instantiated with one ...
Definition: tree_node.hpp:2186
tree_nodeRef slot
slot is the slot which was allocated for this expression
Definition: tree_node.hpp:1928
bool register_flag
register_flag means declared &#39;register&#39; (macro DECL_REGISTER)
Definition: tree_node.hpp:3696
struct definition of the function_decl tree node.
Definition: tree_node.hpp:3179
tree_nodeRef op3
third operand
Definition: tree_node.hpp:6059
tree_nodeRef chan
purp is the TREE_CHAIN field: tree_list nodes are made into lists by chaining through the TREE_CHAIN ...
Definition: tree_node.hpp:5269
tree_nodeRef param_packs
PACK_EXPANSION_PARAMETER_PACKS.
Definition: tree_node.hpp:2152
tree_nodeRef base
BASE register.
Definition: tree_node.hpp:4879
tree_nodeRef fn
fn is the operand 0 of the call expression: this is the function
Definition: tree_node.hpp:1879
tree_nodeRef retn
retn field is the type of value returned.
Definition: tree_node.hpp:2974
struct definition of the field_decl tree node.
Definition: tree_node.hpp:2640
tree_nodeRef step
STEP integer constant.
Definition: tree_node.hpp:4958
bool reading_memory
True if function read from memory somehow.
Definition: tree_node.hpp:2783
tree_nodeRef op0
the branch var
Definition: tree_node.hpp:4781
struct definition of the complex_type tree node.
Definition: tree_node.hpp:2282
tree_nodeRef predicate
The predicate.
Definition: tree_node.hpp:3027
tree_nodeRef arg
PACK_EXPANSION_EXTRA_ARGS.
Definition: tree_node.hpp:2155
Classes specification of the tree_node data structures.
GIMPLE_SWITCH <INDEX, DEFAULT_LAB, LAB1, ..., LABN> represents the multiway branch: ...
Definition: tree_node.hpp:4773
bool virt_flag
virt_flag is true if the node is a virtual declaration (macro TREE_VIA_VIRTUAL)
Definition: tree_node.hpp:1724
tree_nodeRef cls
If pointer mem struct type.
Definition: tree_node.hpp:4102
tree_nodeRef op0
The first operand of the ternary expression.
Definition: tree_node.hpp:2353
struct definition of the field attr on function_decl, field_decl, var_decl tree node.
Definition: tree_node.hpp:774
#define THROW_ERROR(str_expr)
helper function used to throw an error in a standard way
Definition: exceptions.hpp:263
bool static_flag
static_flag is true if function has been defined (macro TREE_STATIC)
Definition: tree_node.hpp:2864
tree_nodeRef smt_ann
symbol_memory_tag annotation
Definition: tree_node.hpp:4296
bool init_assignment
Definition: tree_node.hpp:3029
tree_nodeRef offset
OFFSET integer constant.
Definition: tree_node.hpp:4888
tree_nodeRef memdef
whole memory operand def
Definition: tree_node.hpp:1090
struct definition of the pointer_type tree node.
Definition: tree_node.hpp:3896
tree_nodeRef got
got field is the operand 2 (macro CASE_LABEL) of the case label expression
Definition: tree_node.hpp:2028
unsigned int algn
algn field is the alignment necessary for objects of this type.
Definition: tree_node.hpp:1362
tree_nodeRef binf
binf field are information about this type, as a base type for itself.
Definition: tree_node.hpp:5567
tree_nodeRef op0
true table constant
Definition: tree_node.hpp:6050
tree_nodeRef tag
result of the tree level alias analysis
Definition: tree_node.hpp:4894
tree_nodeRef orig
original memory access
Definition: tree_node.hpp:4891
This struct specifies the block node.
Definition: tree_node.hpp:1820
tree_nodeRef op0
The first operand of the binary expression.
Definition: tree_node.hpp:1214
tree_nodeRef dcls
declarations
Definition: tree_node.hpp:3539
int line
line is the line number where the compound_stmt is defined.
Definition: tree_node.hpp:3149
struct definition of common part of WeightedNode (gimple_assign, expr_node)
Definition: tree_node.hpp:738
TreeVocabularyTokenTypes_TokenEnum
tree_nodeRef min
min: tree-dump.c use the macro TYPE_MIN_VALUE
Definition: tree_node.hpp:2535
struct definition of the reference_type tree node.
Definition: tree_node.hpp:4220
This struct specifies the cast_expr node.
Definition: tree_node.hpp:2057
tree_nodeRef hdlr
Is the handler of the statement.
Definition: tree_node.hpp:5423
bool operator_flag
it is true when the function_decl is an operator
Definition: tree_node.hpp:2765
bool overflow_flag
overflow_flag means there was an overflow in folding, and no warning has been issued for this subexpr...
Definition: tree_node.hpp:4001
tree_nodeRef tmpl_args
tmpl_args holds template instantiations It is a TREE_VEC whose LIST_OF_OP holds template instantiatio...
Definition: tree_node.hpp:5487
bool readonly_flag
readonly_flag means readonly parameter (macro TREE_READONLY)
Definition: tree_node.hpp:5728
int initiation_time
Used for pipelined with unbounded operations.
Definition: tree_node.hpp:2792
struct definition of the common part of an expression
Definition: tree_node.hpp:973
tree_nodeRef type
type of the expression
Definition: tree_node.hpp:4946
tree_nodeRef cnst
field cnst holds the value of a constant (tree-dump.c use the macro DECL_INITIAL) ...
Definition: tree_node.hpp:2396
int fixd
Is the result of THUNK_FIXED_OFFSET(t) for this tree node.
Definition: tree_node.hpp:2809
bool virtual_flag
flag for virtual SSA
Definition: tree_node.hpp:4556
unsigned int vers
vers is the SSA version number of this SSA name.
Definition: tree_node.hpp:4547
tree_nodeRef init
init field holds the value to initialize a variable to.
Definition: tree_node.hpp:5698
This struct specifies the lut_expr node.
Definition: tree_node.hpp:6042
This struct specifies the complex_cst node.
Definition: tree_node.hpp:2237
tree_nodeRef type
type of the expression
Definition: tree_node.hpp:981
bool static_flag
to manage standard static attribute
Definition: tree_node.hpp:5678
tree_nodeRef csts
csts is a list in which each element&#39;s TREE_PURPOSE is a name and the TREE_VALUE is the value (an int...
Definition: tree_node.hpp:2545
struct definition of the type node structures.
Definition: tree_node.hpp:1318
bool unsigned_flag
unsigned means an unsigned type (macro TYPE_UNSIGNED)
Definition: tree_node.hpp:2293
This struct specifies the tree_list node.
Definition: tree_node.hpp:5255
tree_nodeRef rslt
rslt is null for struct templates and declaration for object to be created for non-struct templates ...
Definition: tree_node.hpp:5003
Class specification of the tree_reindex support class.
tree_nodeRef clnp
it is the cleanup for this node
Definition: tree_node.hpp:4828
#define CHECK_VALUE_OPT(token, value)
This struct represent a statement expression.
Definition: tree_node.hpp:2592
int used
used is nonzero if the name is used in its scope (macro TREE_USED)
Definition: tree_node.hpp:5716
This struct specifies the call_expr node.
Definition: tree_node.hpp:1873
std::string strg
strg is the TREE_STRING_POINTER.
Definition: tree_node.hpp:4732
tree_nodeRef op1
initialization
unsigned int algn
algn field holds the alignment required for the datum, in bits.
Definition: tree_node.hpp:3684
tree_nodeRef body
Is the body of the statement.
Definition: tree_node.hpp:5420
tree_nodeRef min
minimum values this SSA may reach
Definition: tree_node.hpp:4592
tree_nodeRef op0
The first operand of the binary expression.
Definition: tree_node.hpp:4471
tree_nodeRef op0
op0 is the operand 0 (macro CASE_LOW) of the case label expression
Definition: tree_node.hpp:2019
tree_nodeRef step
STEP integer constant.
Definition: tree_node.hpp:4885
This struct specifies reference to particular overloaded struct method The tree walker structure of t...
Definition: tree_node.hpp:4463
struct definition of the common part of a gimple with virtual operands
Definition: tree_node.hpp:1078
This struct represent a &#39;return&#39; statement.
Definition: tree_node.hpp:4387
This struct specifies a multi-way-if construct.
This struct specifies the real_cst node.
Definition: tree_node.hpp:3990
tree_nodeRef op0
The first operand of the Quaternary expression.
Definition: tree_node.hpp:1284
tree_nodeRef op0
The first operand of the ternary expression.
Definition: tree_node.hpp:1247
int virt
Is the result of tree_low_cst (THUNK_VIRTUAL_OFFSET (t), 0) for this node.
Definition: tree_node.hpp:2812
bool find_res
result of the search
tree_nodeRef vfld
FIXME: check the meaning.
Definition: tree_node.hpp:4124
tree_nodeRef idx2
INDEX register.
Definition: tree_node.hpp:4961
This struct specifies the case_label_expr node.
Definition: tree_node.hpp:2011
tree_nodeRef type
type field holds the data type of the object, when relevant.
Definition: tree_node.hpp:907
tree_nodeRef op1
The second operand of the binary expression.
Definition: tree_node.hpp:4474
bool struct_flag
true when a struct is considered
Definition: tree_node.hpp:4121
Classes specification of the tree_node data structures not present in the gcc.
static bool check_tree_node_opt(const std::map< TreeVocabularyTokenTypes_TokenEnum, std::string >::const_iterator &it_element, const std::map< TreeVocabularyTokenTypes_TokenEnum, std::string >::const_iterator &it_end, const tree_nodeRef &tn, const std::string &)
tree_nodeRef inst
inst field holds the template instantiation vector.
Definition: tree_node.hpp:5006
unsigned int true_edge
in case the last statement is a gimple_cond associated with an if statement this member contains the ...
bool pipeline_enabled
True if pipelining is enabled for the function.
Definition: tree_node.hpp:2786
Low-level memory addressing.
Definition: tree_node.hpp:4865
bool spec_flag
true when a spec is considered
Definition: tree_node.hpp:4115
tree_nodeRef clob
clob is the operand 3: ASM_CLOBBERS, this represents the clobbers for the statement.
Definition: tree_node.hpp:1594
tree_nodeRef valu
purp is the TREE_VALUE field which stores the elements of the list.
Definition: tree_node.hpp:5266
tree_nodeRef purp
purp is the TREE_PURPOSE field occasionally used as well to get the effect of Lisp association lists...
Definition: tree_node.hpp:5263
int line
line is the line number where the compound_stmt is defined.
Definition: tree_node.hpp:4395
std::string bit_values
for each bit of the SSA variable tells if it is equal to U,X,0,1
Definition: tree_node.hpp:4598
This struct specifies the ssa_name node.
Definition: tree_node.hpp:4523
tree_nodeRef next
Is the next statement.
Definition: tree_node.hpp:5426
tree_nodeRef elts
field elts is the type of an array element (tree-dump.c use the macro TREE_TYPE)
Definition: tree_node.hpp:1530
tree_nodeRef ptd
If pointer mem point to type.
Definition: tree_node.hpp:4099
tree_nodeRef op
op field is the operand of this node
Definition: tree_node.hpp:4362
This struct specifies the gimple_goto node.
Definition: tree_node.hpp:3089
tree_nodeRef expr
Is the statement given by the expression.
Definition: tree_node.hpp:2603
This struct specifies the for expression Used to represent a for construct.
struct definition of the integer_type tree node.
Definition: tree_node.hpp:2513
struct definition of the integer_type tree node.
Definition: tree_node.hpp:3279
tree_nodeRef op1
the vec of CASE_LABEL_EXPRs
Definition: tree_node.hpp:4784
tree_nodeRef op2
postincrement
tree_nodeRef type
starting from GCC 4.7.2 ssa_name has a type
Definition: tree_node.hpp:4540
size_t lngt
lngt is the length of the array (list_of_op) stored in tree_vec node.(macro TREE_VEC_LENGTH) ...
Definition: tree_node.hpp:5307
tree_nodeRef op
PACK_EXPANSION_PATTERN.
Definition: tree_node.hpp:2149
struct definition of the binary node structures.
Definition: tree_node.hpp:1206
tree_nodeRef smt_ann
symbol_memory_tag annotation
Definition: tree_node.hpp:3707
tree_nodeRef type
type field is the type of the node
Definition: tree_node.hpp:1439
This struct specifies the tree_vec node.
Definition: tree_node.hpp:5299
const std::map< TreeVocabularyTokenTypes_TokenEnum, std::string > & tree_node_schema
tree_node_schema expresses the value of the fields of the tree node we are looking for...
unsigned int orig_vers
original SSA version number from GCC
Definition: tree_node.hpp:4550
bool packed_flag
Indicates this field should be bit-packed.
Definition: tree_node.hpp:921
tree_nodeRef arg
arguments stored in the argument pack
Definition: tree_node.hpp:5147
tree_nodeRef op8
eighth operand
Definition: tree_node.hpp:6074
tree_nodeRef op
op field is the operand of the unary expression
Definition: tree_node.hpp:1185
tree_nodeRef smt_ann
symbol_memory_tag annotation
Definition: tree_node.hpp:5737
tree_nodeRef body
body is the operand 1 (GIMPLE_BIND_BODY), this is the body, the expression to be computed using the v...
Definition: tree_node.hpp:1676
tree_nodeRef op0
The boolean condition.
tree_nodeRef symbol
static or global variable
Definition: tree_node.hpp:4876
tree_nodeRef scpe
scope declaration
Definition: tree_node.hpp:910
tree_nodeRef real
real is the TREE_REALPART which content is other constant node.
Definition: tree_node.hpp:2245
This struct specifies the gimple_asm node.
Definition: tree_node.hpp:1574
tree_nodeRef inline_body
java inline body
Definition: tree_node.hpp:2875
tree_nodeRef op1
The second operand of the ternary expression.
Definition: tree_node.hpp:1250
bool extern_flag
a variable can be extern
Definition: tree_node.hpp:5681
tree_nodeRef op
the label
Definition: tree_node.hpp:3097
tree_nodeRef max
maximum values this SSA may reach
Definition: tree_node.hpp:4595
tree_nodeRef size
size field holds the size of datum, in bits.
Definition: tree_node.hpp:2660
tree_nodeRef type
Definition: tree_node.hpp:5078
This struct specifies the gimple_call node.
Definition: tree_node.hpp:1959
tree_nodeRef op5
fifth operand
Definition: tree_node.hpp:6065
tree_nodeRef offset
OFFSET integer constant.
Definition: tree_node.hpp:4952
struct definition of the declaration node structures.
Definition: tree_node.hpp:877
bool addr_not_taken
True when we are able to prove that its address is not taken and do not escape.
Definition: tree_node.hpp:5690
int bases
The number of basetypes for NODE.
Definition: tree_node.hpp:1727
tree_nodeRef op2
The third operand of the Quaternary expression.
Definition: tree_node.hpp:1290
tree_nodeRef chan
Is the chain.
Definition: tree_node.hpp:3632
unsigned int false_edge
in case the last statement is a gimple_cond associated with an if statement this member contains the ...
bool hwcall_flag
flag true when the function is marked as hwcall
Definition: tree_node.hpp:2858
unsigned int prec
prec field is the number of bits used by this type.
Definition: tree_node.hpp:4052
This struct specifies the while expression Used to represent a while construct.
tree_nodeRef fn
fn is the operand 0 of the call expression: this is the function
Definition: tree_node.hpp:1965
Represents a type expression that will be expanded into a list of types when instantiated with one or...
Definition: tree_node.hpp:2141
Memory tags used in tree-ssa to represent memory locations in virtual SSA.
Definition: tree_node.hpp:1393

Generated on Mon Feb 12 2024 13:02:56 for PandA-2024.02 by doxygen 1.8.13