PandA-2024.02
type_casting.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  */
44 #include "type_casting.hpp"
46 
48 #include "ext_tree_node.hpp"
49 #include "tree_basic_block.hpp"
50 #include "tree_helper.hpp"
51 #include "tree_node.hpp"
52 #include "tree_reindex.hpp"
53 
54 void type_casting::operator()(const mem_ref* obj, unsigned int& mask)
55 {
56  if(visited.find(obj->index) != visited.end())
57  {
58  mask = NO_VISIT;
59  }
60  else
61  {
62  types.insert(obj->type);
63  tree_node_visitor::operator()(obj, mask);
64  }
65 }
66 
67 void type_casting::operator()(const indirect_ref* obj, unsigned int& mask)
68 {
69  if(visited.find(obj->index) != visited.end())
70  {
71  mask = NO_VISIT;
72  }
73  else
74  {
75  types.insert(obj->type);
76  tree_node_visitor::operator()(obj, mask);
77  }
78 }
79 
80 void type_casting::operator()(const tree_node* obj, unsigned int&)
81 {
82  visited.insert(obj->index);
83 }
84 
85 void type_casting::operator()(const WeightedNode*, unsigned int& mask)
86 {
87  mask = NO_VISIT;
88 }
89 
90 void type_casting::operator()(const tree_reindex*, unsigned int&)
91 {
92 }
93 
94 void type_casting::operator()(const attr*, unsigned int& mask)
95 {
96  mask = NO_VISIT;
97 }
98 
99 void type_casting::operator()(const srcp*, unsigned int& mask)
100 {
101  mask = NO_VISIT;
102 }
103 
104 void type_casting::operator()(const decl_node* obj, unsigned int& mask)
105 {
106  if(visited.find(obj->index) != visited.end())
107  {
108  mask = NO_VISIT;
109  }
110 }
111 
112 void type_casting::operator()(const expr_node* obj, unsigned int& mask)
113 {
114  if(visited.find(obj->index) != visited.end())
115  {
116  mask = NO_VISIT;
117  }
118 }
119 
120 void type_casting::operator()(const gimple_node* obj, unsigned int& mask)
121 {
122  if(visited.find(obj->index) != visited.end())
123  {
124  mask = NO_VISIT;
125  }
126 }
127 
128 void type_casting::operator()(const unary_expr* obj, unsigned int& mask)
129 {
130  if(obj->get_kind() == view_convert_expr_K)
131  {
132  types.insert(obj->type);
133  types.insert(tree_helper::CGetType(obj->op));
134  }
135  if(visited.find(obj->index) != visited.end())
136  {
137  mask = NO_VISIT;
138  }
139 }
140 
141 void type_casting::operator()(const binary_expr* obj, unsigned int& mask)
142 {
143  if(visited.find(obj->index) != visited.end())
144  {
145  mask = NO_VISIT;
146  }
147 }
148 
149 void type_casting::operator()(const ternary_expr* obj, unsigned int& mask)
150 {
151  if(visited.find(obj->index) != visited.end())
152  {
153  mask = NO_VISIT;
154  }
155 }
156 
157 void type_casting::operator()(const quaternary_expr* obj, unsigned int& mask)
158 {
159  if(visited.find(obj->index) != visited.end())
160  {
161  mask = NO_VISIT;
162  }
163 }
164 
165 void type_casting::operator()(const type_node* obj, unsigned int& mask)
166 {
167  if(visited.find(obj->index) != visited.end())
168  {
169  mask = NO_VISIT;
170  }
171 }
172 
173 void type_casting::operator()(const memory_tag* obj, unsigned int& mask)
174 {
175  if(visited.find(obj->index) != visited.end())
176  {
177  mask = NO_VISIT;
178  }
179 }
180 
181 void type_casting::operator()(const cst_node* obj, unsigned int& mask)
182 {
183  if(visited.find(obj->index) != visited.end())
184  {
185  mask = NO_VISIT;
186  }
187 }
188 
189 void type_casting::operator()(const error_mark* obj, unsigned int& mask)
190 {
191  if(visited.find(obj->index) != visited.end())
192  {
193  mask = NO_VISIT;
194  }
195 }
196 
197 void type_casting::operator()(const array_type* obj, unsigned int& mask)
198 {
199  if(visited.find(obj->index) != visited.end())
200  {
201  mask = NO_VISIT;
202  }
203 }
204 
205 void type_casting::operator()(const gimple_asm* obj, unsigned int& mask)
206 {
207  if(visited.find(obj->index) != visited.end())
208  {
209  mask = NO_VISIT;
210  }
211 }
212 
213 void type_casting::operator()(const baselink* obj, unsigned int& mask)
214 {
215  if(visited.find(obj->index) != visited.end())
216  {
217  mask = NO_VISIT;
218  }
219 }
220 
221 void type_casting::operator()(const gimple_bind* obj, unsigned int& mask)
222 {
223  if(visited.find(obj->index) != visited.end())
224  {
225  mask = NO_VISIT;
226  }
227 }
228 
229 void type_casting::operator()(const binfo* obj, unsigned int& mask)
230 {
231  if(visited.find(obj->index) != visited.end())
232  {
233  mask = NO_VISIT;
234  }
235 }
236 
237 void type_casting::operator()(const block* obj, unsigned int& mask)
238 {
239  if(visited.find(obj->index) != visited.end())
240  {
241  mask = NO_VISIT;
242  }
243 }
244 
245 void type_casting::operator()(const call_expr* obj, unsigned int& mask)
246 {
247  if(visited.find(obj->index) != visited.end())
248  {
249  mask = NO_VISIT;
250  }
251 }
252 
253 void type_casting::operator()(const lut_expr* obj, unsigned int& mask)
254 {
255  if(visited.find(obj->index) != visited.end())
256  {
257  mask = NO_VISIT;
258  }
259 }
260 
261 void type_casting::operator()(const aggr_init_expr* obj, unsigned int& mask)
262 {
263  if(visited.find(obj->index) != visited.end())
264  {
265  mask = NO_VISIT;
266  }
267 }
268 
269 void type_casting::operator()(const gimple_call* obj, unsigned int& mask)
270 {
271  if(visited.find(obj->index) != visited.end())
272  {
273  mask = NO_VISIT;
274  }
275 }
276 
277 void type_casting::operator()(const case_label_expr* obj, unsigned int& mask)
278 {
279  if(visited.find(obj->index) != visited.end())
280  {
281  mask = NO_VISIT;
282  }
283 }
284 
285 void type_casting::operator()(const cast_expr* obj, unsigned int& mask)
286 {
287  if(visited.find(obj->index) != visited.end())
288  {
289  mask = NO_VISIT;
290  }
291 }
292 
293 void type_casting::operator()(const complex_cst* obj, unsigned int& mask)
294 {
295  if(visited.find(obj->index) != visited.end())
296  {
297  mask = NO_VISIT;
298  }
299 }
300 
301 void type_casting::operator()(const complex_type* obj, unsigned int& mask)
302 {
303  if(visited.find(obj->index) != visited.end())
304  {
305  mask = NO_VISIT;
306  }
307 }
308 
309 void type_casting::operator()(const gimple_cond* obj, unsigned int& mask)
310 {
311  if(visited.find(obj->index) != visited.end())
312  {
313  mask = NO_VISIT;
314  }
315 }
316 
317 void type_casting::operator()(const const_decl* obj, unsigned int& mask)
318 {
319  if(visited.find(obj->index) != visited.end())
320  {
321  mask = NO_VISIT;
322  }
323 }
324 
325 void type_casting::operator()(const constructor* obj, unsigned int& mask)
326 {
327  if(visited.find(obj->index) != visited.end())
328  {
329  mask = NO_VISIT;
330  }
331 }
332 
333 void type_casting::operator()(const enumeral_type* obj, unsigned int& mask)
334 {
335  if(visited.find(obj->index) != visited.end())
336  {
337  mask = NO_VISIT;
338  }
339 }
340 
341 void type_casting::operator()(const expr_stmt* obj, unsigned int& mask)
342 {
343  if(visited.find(obj->index) != visited.end())
344  {
345  mask = NO_VISIT;
346  }
347 }
348 
349 void type_casting::operator()(const field_decl* obj, unsigned int& mask)
350 {
351  if(visited.find(obj->index) != visited.end())
352  {
353  mask = NO_VISIT;
354  }
355 }
356 
357 void type_casting::operator()(const function_decl* obj, unsigned int& mask)
358 {
359  if(visited.find(obj->index) != visited.end())
360  {
361  mask = NO_VISIT;
362  }
363 }
364 
365 void type_casting::operator()(const function_type* obj, unsigned int& mask)
366 {
367  if(visited.find(obj->index) != visited.end())
368  {
369  mask = NO_VISIT;
370  }
371 }
372 
373 void type_casting::operator()(const gimple_assign* obj, unsigned int& mask)
374 {
375  if(visited.find(obj->index) != visited.end())
376  {
377  mask = NO_VISIT;
378  }
379 }
380 
381 void type_casting::operator()(const gimple_goto* obj, unsigned int& mask)
382 {
383  if(visited.find(obj->index) != visited.end())
384  {
385  mask = NO_VISIT;
386  }
387 }
388 
389 void type_casting::operator()(const handler* obj, unsigned int& mask)
390 {
391  if(visited.find(obj->index) != visited.end())
392  {
393  mask = NO_VISIT;
394  }
395 }
396 
397 void type_casting::operator()(const identifier_node* obj, unsigned int& mask)
398 {
399  if(visited.find(obj->index) != visited.end())
400  {
401  mask = NO_VISIT;
402  }
403 }
404 
405 void type_casting::operator()(const integer_cst* obj, unsigned int& mask)
406 {
407  if(visited.find(obj->index) != visited.end())
408  {
409  mask = NO_VISIT;
410  }
411 }
412 
413 void type_casting::operator()(const integer_type* obj, unsigned int& mask)
414 {
415  if(visited.find(obj->index) != visited.end())
416  {
417  mask = NO_VISIT;
418  }
419 }
420 
421 void type_casting::operator()(const gimple_label* obj, unsigned int& mask)
422 {
423  if(visited.find(obj->index) != visited.end())
424  {
425  mask = NO_VISIT;
426  }
427 }
428 
429 void type_casting::operator()(const method_type* obj, unsigned int& mask)
430 {
431  if(visited.find(obj->index) != visited.end())
432  {
433  mask = NO_VISIT;
434  }
435 }
436 
437 void type_casting::operator()(const namespace_decl* obj, unsigned int& mask)
438 {
439  if(visited.find(obj->index) != visited.end())
440  {
441  mask = NO_VISIT;
442  }
443 }
444 
445 void type_casting::operator()(const overload* obj, unsigned int& mask)
446 {
447  if(visited.find(obj->index) != visited.end())
448  {
449  mask = NO_VISIT;
450  }
451 }
452 
453 void type_casting::operator()(const parm_decl* obj, unsigned int& mask)
454 {
455  if(visited.find(obj->index) != visited.end())
456  {
457  mask = NO_VISIT;
458  }
459 }
460 
461 void type_casting::operator()(const gimple_phi* obj, unsigned int& mask)
462 {
463  if(visited.find(obj->index) != visited.end())
464  {
465  mask = NO_VISIT;
466  }
467 }
468 
469 void type_casting::operator()(const pointer_type* obj, unsigned int& mask)
470 {
471  if(visited.find(obj->index) != visited.end())
472  {
473  mask = NO_VISIT;
474  }
475 }
476 
477 void type_casting::operator()(const real_cst* obj, unsigned int& mask)
478 {
479  if(visited.find(obj->index) != visited.end())
480  {
481  mask = NO_VISIT;
482  }
483 }
484 
485 void type_casting::operator()(const real_type* obj, unsigned int& mask)
486 {
487  if(visited.find(obj->index) != visited.end())
488  {
489  mask = NO_VISIT;
490  }
491 }
492 
493 void type_casting::operator()(const record_type* obj, unsigned int& mask)
494 {
495  if(visited.find(obj->index) != visited.end())
496  {
497  mask = NO_VISIT;
498  }
499 }
500 
501 void type_casting::operator()(const reference_type* obj, unsigned int& mask)
502 {
503  if(visited.find(obj->index) != visited.end())
504  {
505  mask = NO_VISIT;
506  }
507 }
508 
509 void type_casting::operator()(const result_decl* obj, unsigned int& mask)
510 {
511  if(visited.find(obj->index) != visited.end())
512  {
513  mask = NO_VISIT;
514  }
515 }
516 
517 void type_casting::operator()(const gimple_return* obj, unsigned int& mask)
518 {
519  if(visited.find(obj->index) != visited.end())
520  {
521  mask = NO_VISIT;
522  }
523 }
524 
525 void type_casting::operator()(const return_stmt* obj, unsigned int& mask)
526 {
527  if(visited.find(obj->index) != visited.end())
528  {
529  mask = NO_VISIT;
530  }
531 }
532 
533 void type_casting::operator()(const scope_ref* obj, unsigned int& mask)
534 {
535  if(visited.find(obj->index) != visited.end())
536  {
537  mask = NO_VISIT;
538  }
539 }
540 
541 void type_casting::operator()(const ssa_name* obj, unsigned int& mask)
542 {
543  if(visited.find(obj->index) != visited.end())
544  {
545  mask = NO_VISIT;
546  }
547 }
548 
549 void type_casting::operator()(const statement_list* obj, unsigned int& mask)
550 {
551  if(visited.find(obj->index) != visited.end())
552  {
553  mask = NO_VISIT;
554  }
555 }
556 
557 void type_casting::operator()(const string_cst* obj, unsigned int& mask)
558 {
559  if(visited.find(obj->index) != visited.end())
560  {
561  mask = NO_VISIT;
562  }
563 }
564 
565 void type_casting::operator()(const gimple_switch* obj, unsigned int& mask)
566 {
567  if(visited.find(obj->index) != visited.end())
568  {
569  mask = NO_VISIT;
570  }
571 }
572 
573 void type_casting::operator()(const target_expr* obj, unsigned int& mask)
574 {
575  if(visited.find(obj->index) != visited.end())
576  {
577  mask = NO_VISIT;
578  }
579 }
580 
581 void type_casting::operator()(const template_decl* obj, unsigned int& mask)
582 {
583  if(visited.find(obj->index) != visited.end())
584  {
585  mask = NO_VISIT;
586  }
587 }
588 
589 void type_casting::operator()(const template_parm_index* obj, unsigned int& mask)
590 {
591  if(visited.find(obj->index) != visited.end())
592  {
593  mask = NO_VISIT;
594  }
595 }
596 
597 void type_casting::operator()(const tree_list* obj, unsigned int& mask)
598 {
599  if(visited.find(obj->index) != visited.end())
600  {
601  mask = NO_VISIT;
602  }
603 }
604 
605 void type_casting::operator()(const tree_vec* obj, unsigned int& mask)
606 {
607  if(visited.find(obj->index) != visited.end())
608  {
609  mask = NO_VISIT;
610  }
611 }
612 
613 void type_casting::operator()(const try_block* obj, unsigned int& mask)
614 {
615  if(visited.find(obj->index) != visited.end())
616  {
617  mask = NO_VISIT;
618  }
619 }
620 
621 void type_casting::operator()(const type_decl* obj, unsigned int& mask)
622 {
623  if(visited.find(obj->index) != visited.end())
624  {
625  mask = NO_VISIT;
626  }
627 }
628 
629 void type_casting::operator()(const union_type* obj, unsigned int& mask)
630 {
631  if(visited.find(obj->index) != visited.end())
632  {
633  mask = NO_VISIT;
634  }
635 }
636 
637 void type_casting::operator()(const var_decl* obj, unsigned int& mask)
638 {
639  if(visited.find(obj->index) != visited.end())
640  {
641  mask = NO_VISIT;
642  }
643 }
644 
645 void type_casting::operator()(const vector_cst* obj, unsigned int& mask)
646 {
647  if(visited.find(obj->index) != visited.end())
648  {
649  mask = NO_VISIT;
650  }
651 }
652 
653 void type_casting::operator()(const type_argument_pack* obj, unsigned int& mask)
654 {
655  if(visited.find(obj->index) != visited.end())
656  {
657  mask = NO_VISIT;
658  }
659 }
660 
661 void type_casting::operator()(const nontype_argument_pack* obj, unsigned int& mask)
662 {
663  if(visited.find(obj->index) != visited.end())
664  {
665  mask = NO_VISIT;
666  }
667 }
668 
669 void type_casting::operator()(const type_pack_expansion* obj, unsigned int& mask)
670 {
671  if(visited.find(obj->index) != visited.end())
672  {
673  mask = NO_VISIT;
674  }
675 }
676 
677 void type_casting::operator()(const expr_pack_expansion* obj, unsigned int& mask)
678 {
679  if(visited.find(obj->index) != visited.end())
680  {
681  mask = NO_VISIT;
682  }
683 }
684 
685 void type_casting::operator()(const vector_type* obj, unsigned int& mask)
686 {
687  if(visited.find(obj->index) != visited.end())
688  {
689  mask = NO_VISIT;
690  }
691 }
692 
693 void type_casting::operator()(const target_mem_ref* obj, unsigned int& mask)
694 {
695  if(visited.find(obj->index) != visited.end())
696  {
697  mask = NO_VISIT;
698  }
699 }
700 
701 void type_casting::operator()(const target_mem_ref461* obj, unsigned int& mask)
702 {
703  if(visited.find(obj->index) != visited.end())
704  {
705  mask = NO_VISIT;
706  }
707 }
708 
709 void type_casting::operator()(const bloc*, unsigned int& mask)
710 {
711  mask = NO_VISIT;
712 }
713 
714 void type_casting::operator()(const gimple_while* obj, unsigned int& mask)
715 {
716  if(visited.find(obj->index) != visited.end())
717  {
718  mask = NO_VISIT;
719  }
720 }
721 
722 void type_casting::operator()(const gimple_for* obj, unsigned int& mask)
723 {
724  if(visited.find(obj->index) != visited.end())
725  {
726  mask = NO_VISIT;
727  }
728 }
729 
730 void type_casting::operator()(const gimple_multi_way_if* obj, unsigned int& mask)
731 {
732  if(visited.find(obj->index) != visited.end())
733  {
734  mask = NO_VISIT;
735  }
736 }
737 
738 void type_casting::operator()(const null_node* obj, unsigned int& mask)
739 {
740  if(visited.find(obj->index) != visited.end())
741  {
742  mask = NO_VISIT;
743  }
744 }
745 
746 void type_casting::operator()(const gimple_pragma* obj, unsigned int& mask)
747 {
748  if(visited.find(obj->index) != visited.end())
749  {
750  mask = NO_VISIT;
751  }
752 }
753 
754 void type_casting::operator()(const omp_pragma* obj, unsigned int& mask)
755 {
756  if(visited.find(obj->index) != visited.end())
757  {
758  mask = NO_VISIT;
759  }
760 }
761 
762 void type_casting::operator()(const omp_parallel_pragma* obj, unsigned int& mask)
763 {
764  if(visited.find(obj->index) != visited.end())
765  {
766  mask = NO_VISIT;
767  }
768 }
769 
770 void type_casting::operator()(const omp_sections_pragma* obj, unsigned int& mask)
771 {
772  if(visited.find(obj->index) != visited.end())
773  {
774  mask = NO_VISIT;
775  }
776 }
777 
778 void type_casting::operator()(const omp_parallel_sections_pragma* obj, unsigned int& mask)
779 {
780  if(visited.find(obj->index) != visited.end())
781  {
782  mask = NO_VISIT;
783  }
784 }
785 
786 void type_casting::operator()(const omp_section_pragma* obj, unsigned int& mask)
787 {
788  if(visited.find(obj->index) != visited.end())
789  {
790  mask = NO_VISIT;
791  }
792 }
793 
794 void type_casting::operator()(const omp_for_pragma*, unsigned int& mask)
795 {
796  mask = NO_VISIT;
797 }
798 
799 void type_casting::operator()(const omp_simd_pragma*, unsigned int& mask)
800 {
801  mask = NO_VISIT;
802 }
803 
804 void type_casting::operator()(const omp_declare_simd_pragma*, unsigned int& mask)
805 {
806  mask = NO_VISIT;
807 }
808 
809 void type_casting::operator()(const omp_target_pragma*, unsigned int& mask)
810 {
811  mask = NO_VISIT;
812 }
813 
814 void type_casting::operator()(const omp_critical_pragma*, unsigned int& mask)
815 {
816  mask = NO_VISIT;
817 }
818 
819 void type_casting::operator()(const omp_task_pragma*, unsigned int& mask)
820 {
821  mask = NO_VISIT;
822 }
823 
824 void type_casting::operator()(const map_pragma*, unsigned int& mask)
825 {
826  mask = NO_VISIT;
827 }
828 
829 void type_casting::operator()(const call_hw_pragma*, unsigned int& mask)
830 {
831  mask = NO_VISIT;
832 }
833 
834 void type_casting::operator()(const call_point_hw_pragma*, unsigned int& mask)
835 {
836  mask = NO_VISIT;
837 }
838 
839 void type_casting::operator()(const issue_pragma*, unsigned int& mask)
840 {
841  mask = NO_VISIT;
842 }
843 
844 void type_casting::operator()(const blackbox_pragma*, unsigned int& mask)
845 {
846  mask = NO_VISIT;
847 }
848 
849 void type_casting::operator()(const profiling_pragma*, unsigned int& mask)
850 {
851  mask = NO_VISIT;
852 }
853 
854 void type_casting::operator()(const statistical_profiling*, unsigned int& mask)
855 {
856  mask = NO_VISIT;
857 }
struct definition of the type_decl tree node.
Definition: tree_node.hpp:5470
This struct specifies the integer_cst node.
Definition: tree_node.hpp:3242
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
This struct specifies the field bloc (basic block).
struct definition of the vector_type tree node.
Definition: tree_node.hpp:5938
struct definition of the array_type tree node.
Definition: tree_node.hpp:1520
struct definition of the real_type tree node.
Definition: tree_node.hpp:4039
Any erroneous construct is parsed into a node of this type.
Definition: tree_node.hpp:1462
This struct specifies the statement_list node.
Definition: tree_node.hpp:4662
TreeNodeConstSet & types
tree_node visitors
A HANDLER wraps a catch handler for the HANDLER_TYPE.
Definition: tree_node.hpp:3141
struct definition of the source position.
Definition: tree_node.hpp:832
Represents an argument pack of types (or templates).
Definition: tree_node.hpp:5139
struct definition of the function_decl tree node.
Definition: tree_node.hpp:2759
struct definition of the method_type tree node.
Definition: tree_node.hpp:3452
This struct specifies the gimple_label node.
Definition: tree_node.hpp:3343
This struct specifies the string_cst node.
Definition: tree_node.hpp:4724
CustomUnorderedSet< unsigned int > visited
already visited
struct definition of the union_type tree node.
Definition: tree_node.hpp:5540
struct definition of the unary node structures.
Definition: tree_node.hpp:1177
struct definition of the record_type tree node.
Definition: tree_node.hpp:4078
GIMPLE_BIND <VARS, BLOCK, BODY> represents a lexical scope.
Definition: tree_node.hpp:1664
tree node visitor collecting the types used in type casting
struct definition of the ternary node structures.
Definition: tree_node.hpp:1239
This struct specifies the gimple_cond node.
Definition: tree_node.hpp:2345
struct definition of the function_type tree node.
Definition: tree_node.hpp:2960
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.
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
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
Abstract pure class for the tree structure.
Definition: tree_node.hpp:139
virtual enum kind get_kind() const =0
Virtual function returning the type of the actual class.
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
Directive represinting mapping of a software function on a component.
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
This struct specifies the gimple_phi node.
Definition: tree_node.hpp:3742
This struct represents a list-like node for chaining overloading candidates.
Definition: tree_node.hpp:3621
struct definition of the Quaternary node structures.
Definition: tree_node.hpp:1276
void operator()(const mem_ref *obj, unsigned int &mask) override
Header include.
This struct specifies the gimple_assign node (GCC 4.3 tree node).
Definition: tree_node.hpp:3015
This struct specifies super class for constant nodes.
Definition: tree_node.hpp:1431
Directive represinting mapping of a function call on a component.
const unsigned int index
Represent the index read from the raw file and the index-1 of the vector of tree_node associated to t...
Definition: tree_node.hpp:146
Low-level memory addressing.
Definition: tree_node.hpp:4938
This struct specifies the gimple_return node.
Definition: tree_node.hpp:4354
Represents an expression that will be expanded into a list of expressions when instantiated with one ...
Definition: tree_node.hpp:2186
struct definition of the function_decl tree node.
Definition: tree_node.hpp:3179
struct definition of the field_decl tree node.
Definition: tree_node.hpp:2640
struct definition of the complex_type tree node.
Definition: tree_node.hpp:2282
Classes specification of the tree_node data structures.
GIMPLE_SWITCH <INDEX, DEFAULT_LAB, LAB1, ..., LABN> represents the multiway branch: ...
Definition: tree_node.hpp:4773
struct definition of the field attr on function_decl, field_decl, var_decl tree node.
Definition: tree_node.hpp:774
struct definition of the pointer_type tree node.
Definition: tree_node.hpp:3896
This struct specifies the block node.
Definition: tree_node.hpp:1820
This file collects some utility functions.
struct definition of common part of WeightedNode (gimple_assign, expr_node)
Definition: tree_node.hpp:738
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
struct definition of the common part of an expression
Definition: tree_node.hpp:973
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
struct definition of the type node structures.
Definition: tree_node.hpp:1318
This struct specifies the tree_list node.
Definition: tree_node.hpp:5255
Class specification of the tree_reindex support class.
This struct represent a statement expression.
Definition: tree_node.hpp:2592
This struct specifies the call_expr node.
Definition: tree_node.hpp:1873
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
static tree_nodeConstRef CGetType(const tree_nodeConstRef &node)
Return the treenode of the type of node.
This struct specifies the case_label_expr node.
Definition: tree_node.hpp:2011
Classes specification of the tree_node data structures not present in the gcc.
Low-level memory addressing.
Definition: tree_node.hpp:4865
This struct specifies the ssa_name node.
Definition: tree_node.hpp:4523
This struct specifies the gimple_goto node.
Definition: tree_node.hpp:3089
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
#define NO_VISIT
constant used to avoid member visit
Definition: visitor.hpp:69
struct definition of the binary node structures.
Definition: tree_node.hpp:1206
This struct specifies the tree_vec node.
Definition: tree_node.hpp:5299
tree_nodeRef op
op field is the operand of the unary expression
Definition: tree_node.hpp:1185
This struct specifies the gimple_asm node.
Definition: tree_node.hpp:1574
This struct specifies the gimple_call node.
Definition: tree_node.hpp:1959
struct definition of the declaration node structures.
Definition: tree_node.hpp:877
This struct specifies the while expression Used to represent a while construct.
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