source: src/ResolvExpr/RenameVars.h @ 7583c02

arm-ehenumforall-pointer-decayjacob/cs343-translationnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since 7583c02 was 7583c02, checked in by Fangren Yu <f37yu@…>, 2 years ago

partially improve #226: resolver environment size reduced to O(n)

generated code still has exponential size. should cache resolved implicits
and reuse thunks to reduce generated code size.
assertion fails cannot exit early and may have a minor performance
reduction.

  • Property mode set to 100644
File size: 1.2 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// RenameVars.h --
8//
9// Author           : Richard C. Bilson
10// Created On       : Sun May 17 12:10:28 2015
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Sat Jul 22 09:33:54 2017
13// Update Count     : 4
14//
15
16#pragma once
17
18#include <list>               // for list
19#include <map>                // for map
20#include <string>             // for string
21
22#include "SynTree/SynTree.h"  // for Visitor Nodes
23#include "SynTree/Visitor.h"  // for Visitor
24
25namespace ast {
26        class Type;
27}
28
29namespace ResolvExpr {
30        /// Provides a consistent renaming of forall type names in a hierarchy by prefixing them with a unique "level" ID
31        void renameTyVars( Type * );
32
33        enum RenameMode {
34                GEN_USAGE, // for type in VariableExpr
35                GEN_EXPR_ID // for type in decl
36        };
37        const ast::Type * renameTyVars( const ast::Type *, RenameMode mode = GEN_USAGE, bool reset = true );
38       
39
40        /// resets internal state of renamer to avoid overflow
41        void resetTyVarRenaming();
42
43       
44} // namespace ResolvExpr
45
46// Local Variables: //
47// tab-width: 4 //
48// mode: c++ //
49// compile-command: "make install" //
50// End: //
Note: See TracBrowser for help on using the repository browser.