1 // Copyright (C) 2009 Free Software Foundation, Inc.
2 // Contributed by Jan Sjodin <jan.sjodin@amd.com>.
4 // This file is part of the Polyhedral Compilation Package Library (libpcp).
6 // Libpcp is free software; you can redistribute it and/or modify it
7 // under the terms of the GNU Lesser General Public License as published by
8 // the Free Software Foundation; either version 2.1 of the License, or
9 // (at your option) any later version.
11 // Libpcp is distributed in the hope that it will be useful, but WITHOUT ANY
12 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
16 // You should have received a copy of the GNU Lesser General Public License
17 // along with libpcp; see the file COPYING.LIB. If not, write to the
18 // Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 // MA 02110-1301, USA.
21 // As a special exception, if you link this library with other files, some
22 // of which are compiled with GCC, to produce an executable, this library
23 // does not by itself cause the resulting executable to be covered by the
24 // GNU General Public License. This exception does not however invalidate
25 // any other reasons why the executable file might be covered by the GNU
26 // General Public License.
29 #include "pcp_full_visitor.h"
33 PcpFullVisitor::visit(PcpArrayType
* arrayType
)
35 this->visitChildren(arrayType
);
39 PcpFullVisitor::visit(PcpArith
* arith
)
41 this->visitChildren(arith
);
45 PcpFullVisitor::visit(PcpConstant
* constant
)
47 // Leaf no need to visit
51 PcpFullVisitor::visit(PcpIv
* iv
)
53 // Leaf no need to visit
57 PcpFullVisitor::visit(PcpParameter
* parameter
)
59 // Leaf no need to visit
63 PcpFullVisitor::visit(PcpCompare
* compare
)
65 this->visitChildren(compare
);
69 PcpFullVisitor::visit(PcpBoolArith
* boolArith
)
74 PcpFullVisitor::visit(PcpVariable
* variable
)
79 PcpFullVisitor::visit(PcpArrayAccess
* arrayAccess
)
84 PcpFullVisitor::visit(PcpCopy
* copy
)
89 PcpFullVisitor::visit(PcpUserStmt
* userStmt
)
91 this->visitChildren(userStmt
);
95 PcpFullVisitor::visit(PcpSequence
* sequence
)
97 this->visitChildren(sequence
);
101 PcpFullVisitor::visit(PcpGuard
* guard
)
103 this->visitChildren(guard
);
107 PcpFullVisitor::visit(PcpLoop
* loop
)
109 this->visitChildren(loop
);
113 PcpFullVisitor::visit(PcpScop
* scop
)
115 this->visitChildren(scop
);
119 PcpFullVisitor::visit(PcpExpr
* expr
)
122 this->visit(expr
->toArith());
123 else if(expr
->isConstant())
124 this->visit(expr
->toConstant());
125 else if(expr
->isIv())
126 this->visit(expr
->toIv());
127 else if(expr
->isParameter())
128 this->visit(expr
->toParameter());
130 PcpError::reportErrorNewline("Unknown expression\n");
134 PcpFullVisitor::visit(PcpBoolExpr
* boolExpr
)
139 PcpFullVisitor::visit(PcpStmt
* stmt
)
144 PcpFullVisitor::visit(PcpAnnot
* annot
)
149 PcpFullVisitor::visit(PcpAnnotSet
* annot
)
154 PcpFullVisitor::visit(PcpAnnotInt
* annotInt
)
159 PcpFullVisitor::visit(PcpAnnotTerm
* annotTerm
)
164 PcpFullVisitor::visit(PcpAnnotString
* annotString
)
169 PcpFullVisitor::visit(PcpAnnotObject
* annotObject
)
173 PcpFullVisitor::PcpFullVisitor()