ROSE  0.9.9.109
sage3basic.h
1 /*
2  * This header (or its precompiled version) includes the forward declarations of all the Sage IR node classes ("Sg*")
3  * from the ROSETTA-generated files (i.e., gives just the class names).
4  *
5  * Every source file (.C) that becomes part of librose should include "sage3basic.h" as the first included file before any C++
6  * token is processed by the compiler, thus allowing a precompiled version of this header to be used. This applies to pretty
7  * much every .C file under the $ROSE/src directory. Such source files should not include "rose.h".
8  *
9  * No librose header file (those under $ROSE/src) should include sage3basic.h, rose_config.h, or rose.h. If a header file
10  * needs something that's declared in sage3basic.h then include sage3basic.h in the .C file first (GCC cannot use the
11  * precompiled version if it is included from inside another header). If a header file needs a configuration macro (like
12  * HAVE_WHATEVER) from rose_config.h, then it should include "rosePublicConfig.h" instead (and use ROSE_HAVE_WHATEVER).
13  */
14 
15 #ifndef SAGE3_CLASSES_BASIC__H
16 #define SAGE3_CLASSES_BASIC__H
17 
18 // DQ (11/12/2011): This is support to reduce the size of ROSE so that I can manage development on my laptop.
19 // This option defines a subset of ROSE as required to support wotk on the new EDG front-end.
20 // This is defined here becasuse it is not enough to define it in the rose_config.h
21 // because that can't be read early enough to effect what header files are included.
22 // #define ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
23 
24 // Much of ROSE's binary support uses the intX_t and uintX_t types (where X is a bit width), so we need to have the stdc printf
25 // format macros defined for portability. We do that here because it needs to be done before <inttypes.h> is included for the
26 // first time, and we know that most source files for the ROSE library include this file (sage3basic.h) at or near the
27 // beginning. We don't want to define __STDC_FORMAT_MACROS in user code that includes "rose.h" (the user may define it), and
28 // we need to define it in such a way that we won't get warning's if its already defined. [RMP 2012-01-29]
29 #ifndef __STDC_FORMAT_MACROS
30 #define __STDC_FORMAT_MACROS
31 #endif
32 #include <inttypes.h>
33 
34 #include "rose_override.h" // defines ROSE_OVERRIDE as "override" if C++11 is present
35 
36 
37 #include <semaphore.h>
38 #include "fileoffsetbits.h"
39 #include "rosedll.h"
40 //tps (05/04/2010): Added compatibility
41 #ifdef _MSC_VER
42 # if _MSC_VER < 1900
43  #define snprintf _snprintf
44 # endif
45 #endif
46 
47 // George Vulov (Aug. 23, 2010): This macro is not available in OS X by default
48 #ifndef TEMP_FAILURE_RETRY
49 #define TEMP_FAILURE_RETRY(expression) \
50  ({ \
51  long int _result; \
52  do _result = (long int) (expression); \
53  while (_result == -1L && errno == EINTR); \
54  _result; \
55  })
56 #endif
57 
58 // DQ (4/21/2009): Note that this header file will include the STL string header file
59 // which will include sys/stat.h, so the _FILE_OFFSET_BITS macro must be already set
60 // to avoid an ODR violation when using ROSE on 32-bit systems.
61 // DQ (11/10/2007): Added support for ROSE specific paths to be available. These are
62 // useful for tools built using ROSE, they are not presently being used within ROSE.
63 // RPM (8/22/2008): Commented out because it contains info that prevents us from making
64 // optimal use of ccache. "rose_paths.h" contains info that changes every time we
65 // configure. Can it be included at a finer granularity than this?
66 // DQ (8/25/2008): Turn this back on since it breaks ROSE for everyone else. We
67 // are searching for a better solution.
68 #include "rose_paths.h"
69 
70 
71 // DQ (5/30/2004): Added to permit warnings to be placed in the source code so that
72 // issues can be addressed later but called out during development (and eliminated
73 // from the final released version of the source code).
74 #define PRINT_DEVELOPER_WARNINGS 0
75 // #define PRINT_DEVELOPER_WARNINGS 1
76 
77 // Part of debuging use of SUN 6.1 compiler
78 #if defined(__WIN32__) || defined (__WIN16__)
79 #error "WIN macros should not be defined (test in sage3.h)"
80 #endif
81 
82 // Part of debuging use of SUN 6.1 compiler
83 #if defined(__MSDOS__) && defined(_Windows)
84 #error "MSDOS macros should not be defined"
85 #endif
86 
87 // DQ (4/21/2009): Added test to debug use of _FILE_OFFSET_BITS macro in controling size of "struct stat"
88 // #if defined(_FILE_OFFSET_BITS)
89 // #warning "The _FILE_OFFSET_BITS macro should not be set yet!"
90 // #endif
91 
92 // DQ (4/21/2009): This macro is set too late!
93 // Force 64-bit file offsets in struct stat
94 // #define _FILE_OFFSET_BITS 64
95 #include <sys/stat.h>
96 
97 //#include <cstdlib> // For abort()
98 #include <algorithm>
99 #include <fstream>
100 
101 // DQ (8/25/2014): Added logic to isTemplateDeclaration(a_routine_ptr) to force isTemplateDeclaration
102 // in ROSE/EDG connection to be false where the topScopeStack() is a template class instantaition scope.
103 #define ENFORCE_NO_FUNCTION_TEMPLATE_DECLARATIONS_IN_TEMPLATE_CLASS_INSTANTIATIONS 0
104 
105 // DQ (9/24/2004): Try again to remove use of set parent side effect in EDG/Sage III connection! This works!!!
106 #define REMOVE_SET_PARENT_FUNCTION
107 
108 // DQ (6/12/2007): Force checking for valid pointers to IR nodes being overwritten.
109 #define DEBUG_SAGE_ACCESS_FUNCTIONS 0
110 // DQ (6/12/2007): Force assertion test to fail such cases caught when DEBUG_SAGE_ACCESS_FUNCTIONS == 1, else just report error.
111 #define DEBUG_SAGE_ACCESS_FUNCTIONS_ASSERTION 0
112 
113 // DQ (10/12/2004): Remove the resetTemplateName() from use within the EDG/Sage connection
114 // because it will (where required) force calls to generate the qualified name which
115 // requires the parent pointer to have already been set. Since we defer the
116 // setting of the parent pointers until post processing of the Sage III AST.
117 // It is now called within the AstFixup.C.
118 #define USE_RESET_TEMPLATE_NAME false
119 
120 // The ROSE_DEPRECATED marker unconditionally marks a function or variable as deprecated and will produce a warning if
121 // whenever a use of that function or variable occurs. Do not disable this macro; see ROSE_DEPRECATED_FUNCTION instead.
122 // If you mark a function or variable as deprecated, then BE SURE TO FIX PLACES WHERE IT IS USED IN ROSE!!! The WHY argument
123 // should be a string literal (unevaluated) describing why it's deprecated or what to use instead.
124 #if defined(__GNUC__)
125 # define ROSE_DEPRECATED(WHY) __attribute__((deprecated))
126 #elif defined(_MSC_VER)
127 # define ROSE_DEPRECATED(WHY) /*deprecated*/
128 #else
129 # define ROSE_DEPRECATED(WHY) /*deprecated*/
130 #endif
131 
132 // The ROSE_DEPRECATED_FUNCTION and ROSE_DEPRECATED_VARIABLE conditionally mark a function or variable as deprecated. At this
133 // time, ROSE itself contains hundreds of uses of deprecated functions and variables because the people that marked those
134 // functions and variables as deprecated did not also fix ROSE to avoid calling them. The warnings can be suppressed by
135 // defining ROSE_SUPPRESS_DEPRECATION_WARNINGS on the compiler command-line during configuration.
136 //
137 // For the time being we explicitly define ROSE_SUPPRESS_DEPRECATION_WARNINGS because of the problem mentioned above. ROSE
138 // authors should only add ROSE_DEPRECATED markers and not use new ROSE_DEPRECATED_FUNCTION or ROSE_DEPRECATED_VARAIBLE since
139 // the latter two do nothing. AND BE SURE TO FIX PLACES IN ROSE WHERE THE DEPRECATED THING IS USED!!!!!
140 #undef ROSE_SUPPRESS_DEPRECATION_WARNINGS
141 #define ROSE_SUPPRESS_DEPRECATION_WARNINGS
142 #if !defined(ROSE_SUPPRESS_DEPRECATION_WARNINGS)
143 # if !defined(ROSE_DEPRECATED_FUNCTION)
144 # define ROSE_DEPRECATED_FUNCTION ROSE_DEPRECATED
145 # endif
146 # if !defined(ROSE_DEPRECATED_VARIABLE)
147 # define ROSE_DEPRECATED_VARIABLE ROSE_DEPRECATED
148 # endif
149 #else
150 # if !defined(ROSE_DEPRECATED_FUNCTION)
151 # define ROSE_DEPRECATED_FUNCTION /*deprecated*/
152 # endif
153 # if !defined(ROSE_DEPRECATED_VARIABLE)
154 # define ROSE_DEPRECATED_VARIABLE /*deprecated*/
155 # endif
156 #endif
157 
158 // Used to mark deprecated functions and advertise that fact to developers and especially to end users. This is sometimes
159 // turned off during development (because it's annoying) by defining ROSE_SUPPRESS_DEPRECATION_WARNINGS when configuring.
160 #if !defined(ROSE_SUPPRESS_DEPRECATION_WARNINGS)
161 # if defined(__GNUC__)
162  // Put ROSE_DEPRECATED_FUNCTION after the declaration, i.e.: int Foo::bar() const ROSE_DEPRECATED_FUNCTION;
163 # define ROSE_DEPRECATED_FUNCTION __attribute__((deprecated))
164 # define ROSE_DEPRECATED_VARIABLE __attribute__((deprecated))
165 # elif defined(_MSC_VER)
166  // Microsoft Visual C++ needs "__declspec(deprecated)" before the declaration. We don't really want to put
167  // ROSE_DEPRECATED_FUNCTION both before and after functions, so we just don't worry about advertising deprecation when
168  // using Microsoft compilers. Use MinGW instead if you want a real C++ compiler on Windows.
169 # define ROSE_DEPRECATED_FUNCTION /*deprecated*/
170 # define ROSE_DEPRECATED_VARIABLE /*deprecated*/
171 # else
172  // No portable way to mark C++ functions as deprecated.
173 # define ROSE_DEPRECATED_FUNCTION /*deprecated*/
174 # define ROSE_DEPRECATED_VARIABLE /*deprecated*/
175 # endif
176 #else
177 # define ROSE_DEPRECATED_FUNCTION /*deprecated*/
178 # define ROSE_DEPRECATED_VARIABLE /*deprecated*/
179 #endif
180 
181 // DQ (12/22/2007): Name of implicit Fortran "main" when building the program function.
182 #define ROSE_IMPLICIT_FORTRAN_PROGRAM_NAME "rose_fortran_main"
183 
184 // DQ (10/6/2004): We have tracked down and noted all locations where a Sage III member function modifies its input parameters.
185 // The locations where this happens are marked with a print statement which this macro permits us to turn off when we want to
186 // either make an intermediate release of just not see the warning messages. Many side-effects have been removed and some are
187 // pending more details discussions internally. I would like to goal to be a simple rule that input parameters to constructors
188 // are not modified by the constructor or any function called within the constructor body. A stronger rule would be that the
189 // input parameters to any access function which gets and data member of sets a data member would not modified its input
190 // parameters. Same idea but applied to all access functions, not just constructors. It is not clear if we need go further.
191 // Clearly it might be important to have some function that modify their input parameters but a simple design would disallow it!
192 #define PRINT_SIDE_EFFECT_WARNINGS false
193 
194 
195 // DQ (10/21/2004): We require a relaxed level of internal error checking for manually generated AST fragments!
196 // This is required for get through the current regression tests associated with the loop processing code which
197 // does not follwo the new rules for what qualifies as a valid AST. Time is needed for the AST Interface code
198 // to be adapted to the new rules. Not clear how this will effect the unparser!!!
199 // In the future we want to make this value "TRUE" this is a work around until then.
200 #ifdef _MSC_VER
201 #define STRICT_ERROR_CHECKING 0
202 #else
203 #define STRICT_ERROR_CHECKING false
204 #endif
205 
206 // DQ (11/7/2007): Reimplementation of "fixup" support for the AST copy mechanism.
207 // This version separates the fixup into three phases:
208 // Use three files to organize the separate functions (parent/scope setup, symbol table setup, and symbol references).
209 // Order of operations:
210 // 1) Setup scopes on all declaration (e.g. SgInitializedName objects).
211 // 2) Setup the symbol table.
212 // template instantiations must be added to to the symbol tables as defined by their scope
213 // because they may be located outside of their scope (indicated by their template declaration).
214 // We might need a test and set policy.
215 // Use the help map to support error checking in the symbol table construction. Check that
216 // scopes are not in the original AST (not keys in the help map).
217 // 3) Setup the references (SgVarRefExp objects pointers to SgVariableSymbol objects)
218 #define ALT_FIXUP_COPY 1
219 
220 
221 // AJ (10/21/2004) : the current version of g++ 3.2.3 has the "hash_map" deprecated - this
222 // deprecated hash_map is // in the global namespace and generates a warning every time
223 // the file gets included. The "ext/hash_map" is the newer version of the hash_map but
224 // it is no longer in the global namespace or std ( since the hash_map is not part of
225 // the standard STL) but in the compiler specific namespace (__gnu_cxx). Because of this,
226 // we have opted for using the newer version and explicitly using the namespace __gnu_cxx
227 // See below the using namespace section. If there is a need to change this to a more
228 // standard include "hash_map", please make sure you have selected the right namespace for
229 // using the hash_map and modify the section below
230 // for that.
231 // Liao, 7/10/2009
232 //#if __GNUC__ > 4 ||
233 // (__GNUC__ == 4 && (__GNUC_MINOR__ > 3 ||
234 // (__GNUC_MINOR__ == 3 &&
235 // __GNUC_PATCHLEVEL__ >= 0)))
236 //#include <unordered_map>
237 //#else
238 
239 
240 
241 //#endif
242 #if 1
243 #ifdef _MSC_VER
244 // DQ (11/4/2009): MS Visual Studio version of hash_multimap
245 //#include <cliext/hash_map>
246 #else
247 // DQ (11/4/2009): Use the GNU depricated stuff (what works in ROSE at the moment)
248 // tps (01/25/2010) : deprecated - does not work in setup.h
249 // CH (04/28/2010) : We don't need it anymore
250 //#include <ext/hash_map>
251 #endif
252 #endif
253 
254 // tps (01/22/2010) :refactored
255 #include "rosedefs.h"
256 // Support for preprocessors declarations and comments
257 #include "rose_attributes_list.h"
258 
259 // Include ROSE common utility function library
260 #include "StringUtility.h"
261 #include "FileUtility.h"
262 #include "escape.h"
263 
264 // Include support for Brian Gunney's command line parser tool (nice work)
265 #include "sla.h"
266 
267 
268 // DQ (3/29/2006): I sure would like to remove this since it
269 // has a potential to effect other files from other projects
270 // used with ROSE.
271 // #define INLINE
272 
273 // DQ (9/21/2005): Support for memory pools.
274 // This allows for a total number of IR nodes (for each type of IR node) of
275 // (MAX_NUMBER_OF_MEMORY_BLOCKS * DEFAULT_CLASS_ALLOCATION_POOL_SIZE)
276 // It might be better to use an STL vector here since they we don't have
277 // an upper bound on the number of IR nodes of each type!!!
278 // #define DEFAULT_CLASS_ALLOCATION_POOL_SIZE 1000
279 
280 // Typical values used to testing the AST File I/O are 1 or 2, but larger values
281 // are required for better performance. At some point the value should be evaluated
282 // as even a value of 1000 is likely a bit small for larger whole applications.
283 // #define DEFAULT_CLASS_ALLOCATION_POOL_SIZE 1000
284 // #define DEFAULT_CLASS_ALLOCATION_POOL_SIZE 1
285 // #define DEFAULT_CLASS_ALLOCATION_POOL_SIZE 2
286 // #define DEFAULT_CLASS_ALLOCATION_POOL_SIZE 3
287 // #define DEFAULT_CLASS_ALLOCATION_POOL_SIZE 1000
288 
289 // DQ (11/3/2016): This size causes the AST File I/O to fail. It is likely that
290 // since the INITIAL_SIZE_OF_MEMORY_BLOCKS is set to 10000, the DEFAULT_CLASS_ALLOCATION_POOL_SIZE
291 // should apparently be significantly less that the INITIAL_SIZE_OF_MEMORY_BLOCKS.
292 // It is not clear what the rule should be for this.
293 // When it fails the error is:
294 // static const string& Sg_File_Info::getFilenameFromID(int): Assertion `failure == false' failed.
295 // #define DEFAULT_CLASS_ALLOCATION_POOL_SIZE 10000 (fails)
296 // #define DEFAULT_CLASS_ALLOCATION_POOL_SIZE 2000 (passes)
297 #define DEFAULT_CLASS_ALLOCATION_POOL_SIZE 2000
298 // #define DEFAULT_CLASS_ALLOCATION_POOL_SIZE 4000 (fails)
299 
300 // DQ (3/7/2010):Added error checking.
301 #if DEFAULT_CLASS_ALLOCATION_POOL_SIZE < 1
302  #error "DEFAULT_CLASS_ALLOCATION_POOL_SIZE must be greater than zero!"
303 #endif
304 
305 // DQ (3/7/2010): This is no longer used (for several years) and we use an STL based implementation.
306 // #define MAX_NUMBER_OF_MEMORY_BLOCKS 1000
307 
308 
309 // DQ (9/231/2005): Map these to the C library memory alloction/deallocation functions.
310 // These could use alternative allocators which allocate on page boundaries in the future.
311 // This is part of the support for memory pools for the Sage III IR nodes.
312 // #define ROSE_MALLOC malloc
313 // #define ROSE_FREE free
314 // DQ (9/9/2008): Don't let this be confused by a member function called "free" in Robb's work.
315 #define ROSE_MALLOC ::malloc
316 #define ROSE_FREE ::free
317 
318 // DQ (10/6/2006): Allow us to skip the support for caching so that we can measure the effects.
319 #define SKIP_BLOCK_NUMBER_CACHING 0
320 #define SKIP_MANGLED_NAME_CACHING 0
321 
322 #define USE_OLD_BINARY_EXECUTABLE_IR_NODES 0
323 
324 #define USING_OLD_EXECUTABLE_FORMAT_SUPPORT 0
325 #if USING_OLD_EXECUTABLE_FORMAT_SUPPORT
326 // DQ (12/8/2008): Build a forward declaration for the input parameter type for the
327 // SgAsmFileHeader class constructor.
328 namespace Exec { namespace ELF { class ElfFileHeader; }; };
329 #endif
330 
331 
332 // DQ (12/28/2009): Moved from Cxx_Grammar.h to simplify splitting large files generated by ROSETTA.
333 #include "AstAttributeMechanism.h"
334 
335 // DQ (12/29/2009): This permits the optional use of smaller generated header files for the IR.
336 // Without this option the generated header file for the ROSE IR is nearly 300K in size, and
337 // this can be a problem for some compilers (MSVC). This is part of work to optionally reduce
338 // the sizes of some of the larger ROSETTA generated files in ROSE. Later this will be controled
339 // using a configure command line option to ROSE (at configure time).
340 // #define ROSE_USING_SMALL_GENERATED_HEADER_FILES 1
341 
342 // This is an Autoconf conditional macro (so it should not be defined).
343 #ifdef ROSE_USE_SMALLER_GENERATED_FILES
344 // #warning "ROSE_USE_SMALLER_GENERATED_FILES is defined"
345  #define ROSE_USING_SMALL_GENERATED_HEADER_FILES 1
346 #endif
347 
348 // DQ (10/4/2014): Added to support USE_ROSE_ATERM_SUPPORT macro.
349 // Including rose_config.h is a problem, and is caught in any files that
350 // also include rose.h. Since ROSE source files in /src should not be
351 // including rose.h I have fixed many of these, but at least one fails
352 // without rose.h (/src/midend/programAnalysis/genericDataflow/cfgUtils/CFGRewrite.C)
353 // so maybe we should have it be an enforced policy instead of the kind of
354 // error that is is if rose_config.h is included below. The better solution
355 // for users is to include rosePublicConfig.h below (no in place).
356 // Note also that some macros from ROSE may need to be added to the generated
357 // rosePublicConfig.h file (in the script scripts/publicConfiguration.pl).
358 // #include "rose_config.h"
359 #include "rosePublicConfig.h"
360 
361 // DQ (10/4/2014): Not clear if this is the best way to control use of ATerm.
362 // I think we need a specific macro to be defined for when ATerms are being used.
363 // Also I want to initially seperate this from Windows support.
364 #ifndef _MSC_VER
365  #ifdef ROSE_USE_ROSE_ATERM_SUPPORT
366  // DQ (9/27/2013): This is required to be defined for the 64bit ATerm support.
367  #if (__x86_64__ == 1)
368  // 64-bit machines are required to set this before including the ATerm header files.
369  #define SIZEOF_LONG 8
370  #define SIZEOF_VOID_P 8
371  #else
372  // 32-bit machines need not have the values defined (but it is required for this program).
373  #define SIZEOF_LONG 4
374  #define SIZEOF_VOID_P 4
375  #endif
376 
377  #include "aterm1.h"
378  #include "aterm2.h"
379  #else
380  // Define this away so that we can trivially compile without ATerm support.
381  typedef int ATerm;
382  #endif
383 #else
384 // Define this away so that we can trivially compile without ATerm support.
385  typedef int ATerm;
386 #endif
387 
388 // DQ (3/7/2013): I think that we need to use "" instead of <> and this may make a difference for SWIG.
389 // DQ (9/21/2005): This is the simplest way to include this here
390 // This is the definition of the Sage III IR classes (generated header).
391 // #include <Cxx_Grammar.h>
392 #include "Cxx_Grammar.h"
393 
394 // DQ (10/4/2014): Not clear if this is the best way to control use of ATerm.
395 // I think we need a specific macro to be defined for when ATerms are being used.
396 // Also I want to initially seperate this from Windows support.
397 #ifndef _MSC_VER
398 // #ifdef ROSE_USE_ROSE_ATERM_SUPPORT
399  #include "atermSupport.h"
400 // #endif
401 #endif
402 
403 // Disable CC++ extensions (we want to support only the C++ Standard)
404 #undef CCPP_EXTENSIONS_ALLOWED
405 
406 // This should be a simple include (without dependence upon ROSE_META_PROGRAM
407 #include "utility_functions.h"
408 
409 // DQ (3/6/2013): Adding support to restrict visability to SWIG.
410 // #ifndef ROSE_USE_SWIG_SUPPORT
411 
412 // Markus Schordan: temporary fixes for Ast flaws (modified by DQ)
413 #include <typeinfo>
414 
415 // DQ (12/9/2004): The name of this file has been changed to be the new location
416 // of many future Sage III AST manipulation functions in the future. A namespace
417 // (SageInterface) is defined in sageInterface.h.
418 #include "sageInterface.h"
419 
420 
421 // DQ (3/29/2006): Moved Rich's support for better name mangling to a
422 // separate file (out of the code generation via ROSETTA).
423 #include "manglingSupport.h"
424 
425 // Markus Kowarschik: we use the new mechanism of handling preprocessing info;
426 // i.e., we output the preprocessing info attached to the AST nodes.
427 // See the detailed explanation of the mechanisms in the beginning of file
428 // attachPreprocessingInfo.C
429 #define USE_OLD_MECHANISM_OF_HANDLING_PREPROCESSING_INFO 0
430 
431 // DQ (9/1/2006): It is currently an error to normalize the source file names stored
432 // in the SgProject IR node to be absolute paths if they didn't originally appear
433 // that way on the commandline. We have partial support for this but it is a bug
434 // at the moment to use this. However, we do now (work by Andreas) normalize the
435 // source file name when input to EDG so that all Sg_File_Info objects store an
436 // absolute path (unless modified using a #line directive, see test2004_60.C as an
437 // example). The current work is an incremental solution.
438 #define USE_ABSOLUTE_PATHS_IN_SOURCE_FILE_LIST 0
439 
440 // DQ (7/6/2005): Added to support performance analysis of ROSE.
441 // This is located in ROSE/src/midend/astDiagnostics
442 #include "AstPerformance.h"
443 
444 
445 // DQ (4/10/2010): Moved Dwarf and Intel Pin headers to here from rose.h.
446 // DQ (11/7/2008): Added Dwarf support to ROSE AST (applies only to binary executables generated with dwarf debugging information).
447 #ifndef _MSC_VER
448 // tps (11/23/2009) : Commented out right now to make progress in Windows
449  #ifdef ROSE_HAVE_LIBDWARF
450  #include "dwarfSupport.h"
451  #endif
452 
453 // DQ (3/8/2009): Added support for Intel Pin (Dynamic binary Instrumentation)
454 // tps (11/23/2009) : Commented out right now to make progress in Windows
455  #ifdef USE_ROSE_INTEL_PIN_SUPPORT
456 // Note that pin.H (in it's header files) will define "TRUE" and "FALSE" as macros.
457  #include "IntelPinSupport.h"
458  #endif
459 #endif
460 
461 #ifdef ROSE_USE_INTERNAL_FRONTEND_DEVELOPMENT
462  #include "transformationSupport.h"
463 #endif
464 
465 // DQ (10/26/2016): Adding mechanism to suppress use of delete in SgType IR nodes, so
466 // that the memory pool will not be changing while we are traversing it. I think this
467 // is perhaps a fundamental problem in the memory pool traversal if operations are done
468 // that modify the memory pools during the traversal.
469 #define ALLOW_DELETE_OF_EXPLORATORY_NODE 1
470 
471 // endif for ifndef ROSE_USE_SWIG_SUPPORT
472 // #endif
473 
474 #include <initialize.h> // defines Rose::initialize
475 
476 #endif
477 
478