ROSE  0.9.6a
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
functionEvaluationOrderTraversal.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <rose.h>
4 
6 {
10 
13 
15  enum
16  {
19  }
21 
24 };
25 
28 {
31 
35 
38  {
44  };
45 
48 
50  functionCall(function),
53 };
54 
55 
58 
59 class FunctionEvaluationOrderTraversal : public AstTopDownBottomUpProcessing<FunctionCallInheritedAttribute, bool>
60 {
61 public:
64  static std::pair< std::vector<FunctionCallInfo>, std::vector<FunctionCallInfo> > GetFunctionCalls(SgNode* root);
65 
68 
71 
73  virtual bool IsFunctionCallSideEffectFree(SgFunctionCallExp* functionCall);
74 
75 private:
76 
78 
80 
82  std::vector<FunctionCallInfo> normalizableFunctionCalls;
84  std::vector<FunctionCallInfo> nonNormalizableFunctionCalls;
85 };
86